SC H3C 存储软件开发招聘技术试题 海款求和:给定两个非负整数,分别用链表花示。表示方法为,链表的每个节点是一个非负整数 wiNum( ex= uiNum<=9),链表长度小于 100,链表头足数据的最商位,尾部以 NULL结束。求这 两个数的和。
时间: 2023-03-14 07:31:50 浏览: 64
答:要求求两个非负整数的和,可以用链表表示,每个节点是一个非负整数,链表长度小于100,链表头足数据的最商位,尾部以NULL结束。可以采用从低位到高位求和的方法,把相加的结果保存在一个新的链表中,最后返回新的链表头指针。
相关问题
两个整数求和链表返回链表
题目描述
给定两个表示两个非负整数的链表。数字是按照相反的顺序存储的,并且它们的每个节点包含单个数字。添加这两个数字并将其作为链表返回。
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
原因: 342 + 465 = 807
解法
这道题目的思路还是比较简单的,就是用两个指针分别遍历两个链表,每次将对应位置的数的和加上进位,最后将结果存在新的链表中。需要注意的是,如果最后还有进位,需要将进位加上去。
Python 代码
用c语言在一个txt文件中读取两个超大整数,并用链表将他们两个相加求和
这是一道比较复杂的问题,需要分步骤解决。
第一步,读取超大整数
我们可以使用fgets函数从txt文件中读取超大整数,因为fgets可以读取一整行数据。读取的数据可以存储在一个char数组中。
char line[1000];
fgets(line, 1000, fp); // fp是文件指针,指向txt文件
第二步,将超大整数转换为链表
我们需要将超大整数转换为链表,方便后续的计算。我们可以定义一个节点结构体,每个节点存储一个数字,并将节点连接起来,形成链表。
typedef struct Node {
int val;
struct Node* next;
} Node;
Node* createList(char* num) {
Node* head = NULL;
Node* tail = NULL;
int len = strlen(num);
for (int i = len - 1; i >= 0; i--) {
Node* node = (Node*)malloc(sizeof(Node));
node->val = num[i] - '0';
node->next = NULL;
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
第三步,将两个链表相加
我们可以使用一个while循环,遍历两个链表,将对应的节点相加,并将结果存储在新的链表中。
Node