struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
struct ListNode *temp1, *temp2, *temp3, *start;
temp3 = (struct ListNode*)malloc(sizeof(struct ListNode));
temp3->val = 0;
temp3->next = NULL;
if (!temp3)
exit(0);
temp1 = l1;
temp2 = l2;
int val, v1, v2, v3;
while (temp1 != NULL && temp2 != NULL)
{
v1 = temp1->val;
v2 = temp2->val;
val = v1 + v2;
if (val > 9)
{
(temp3->val) = (val - 10); //error here
temp1 = temp1->next;
(temp1->val) = ((temp1->val) + 1);
}
else
(temp3->val) = val;
if (start == NULL)
start = temp3;
temp3 = temp3->next;
temp1 = temp1->next;
temp2 = temp2->next;
}
while (temp1 != NULL)
{
(temp3->val) = (temp1->val);
if (start == NULL)
start = temp3;
temp3 = temp3->next;
temp1 = temp1->next;
}
while (temp2 != NULL)
{
(temp3->val) = (temp2->val);
if (start == NULL)
start = temp3;
temp3 = temp3->next;
temp2 = temp2->next;
}
return start;
}
В этой строке кода есть ошибка (строка: 31 (temp3->val)=(val-10);
). Я пытался добавить эти строки кода после выделения памяти для temp3
(temp3->val=0; temp3->next=NULL;
), но бесполезно.
if (!temp3) /* ... */
слишком поздно. Вы уже разыменовалиtemp3
в двух строках перед этим. - person Swordfish   schedule 01.12.2018