首页 > 解决方案 > 关于如何添加保存在两个结构中的两个数字并将它们保存在第三个结构中的任何想法

问题描述

我从用户那里得到了两个数字并将它们保存在两个结构中,例如:

number1 :23456number2: 244

现在,我必须添加它们并将它们保存在第三个结构中(请注意,当我得到数字 1 和数字 2 时,我一次得到一个字符 - 这会创建我的数字 1。)
关于如何添加它们的任何想法使用结构??而不仅仅是将两个数字保存在int类型中,添加它们并将它们保存在第三个结构中。

typedef struct node {
 char num;
 struct node* next;
}Node;

标签: cstruct

解决方案


这是简短的算法

  • 反转 number1, number2 并将它们别名为 tempn1, tempn2。您可以使用此处的任何方法
  • 创建一个新列表(如果您使用某种初始化函数) - 让它成为 number3 和零初始化carry
  • 循环直到 number1 或 number2 都不为 NULL,即!tempn1 && !tempn2
    • 将加法结果存储在 number3 -addList(number3, (tempn1->num + tempn2->num + carry) % 10)
    • 获得新的随身携带 -carry = (tempn1->num + tempn2->num + carry) / 10
    • 递增 tempn1, tempn2
  • 而 tempn1 不为 NULL
    • 将加法结果存储在 number3 -addList(number3, (tempn1->num + carry) % 10)
    • 获得新的随身携带 -carry = (tempn1->num + carry) / 10
    • 增加 tempn1
  • 而 tempn2 不为 NULL
    • 将加法结果存储在 number3 -addList(number3, (tempn2->num + carry) % 10)
    • 获得新的随身携带 -carry = (tempn2->num + carry) / 10
    • 增加 tempn2
  • if carry
    • addList(number3, carry)
  • 反向数字1,数字2,数字3

推荐阅读