gpt4 book ai didi

c - 将存储为链表的两个数字相加 - 无法使用 C 解决

转载 作者:行者123 更新时间:2023-11-30 16:16:22 25 4
gpt4 key购买 nike

我理解了这个问题,但我无法用“C”解决它。

struct ListNode* newnode(struct ListNode* node, int data) {
struct ListNode* temp = node;
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newnode;
newnode->next = NULL;
newnode->val = data;
return newnode;
}

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* l;
struct ListNode* temp = l;

int carry = 0;
while (l1 != NULL || l2 != NULL) {
int sum = 0;
if (l1 != NULL) {
sum += l1->val;
l1 = l1->next;
}
if (l2 != NULL) {
sum += l2->val;
l2 = l2->next;
}
if (sum >= 10) {
temp = newnode(l, carry);
carry = sum % 10;
}
else {
temp = newnode(l, carry + sum);
}
}
return l;
}

出现运行时错误:“struct ListNode”类型的空指针内的成员访问(solution.c)。我单独运行了“newnode”函数,效果很好。

需要帮助,只是初学者。

最佳答案

处理将新节点添加到空列表:

struct ListNode* newnode(struct ListNode* node, int data){

struct ListNode* temp = node;
struct ListNode *newnode = (struct ListNode*)malloc(sizeof(struct ListNode));

if(temp == NULL){
newnode->val = data;
newnode->next = NULL;
return newnode;
}
while(temp->next != NULL){
temp = temp->next;
}
temp->next = newnode;
newnode->next = NULL;
newnode->val = data;

return newnode;
}

关于c - 将存储为链表的两个数字相加 - 无法使用 C 解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56628141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com