Пытается понять, почему newLL остается нулевым указателем в следующем коде ( Строка 30: Char 16: ошибка времени выполнения: доступ к элементу внутри нулевого указателя типа 'struct ListNode' (решение. cpp) ) пока temp0 ведет себя как положено. Спасибо за помощь.
Проблема: Вам даны два непустых связанных списка, представляющих два неотрицательных целых числа. Цифры хранятся в обратном порядке, и каждый из их узлов содержит один ди git. Добавьте два числа и верните их в виде связанного списка. Вы можете предположить, что два числа не содержат начального нуля, кроме самого числа 0.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *temp0 = NULL;
ListNode *temp1 = l1;
ListNode *temp2 = l2;
//keep track of head
ListNode *newLL = temp0;
int x, y, z, f;
//sum val's and create new nodes on newLL, until l1 or l2 hits a null
while(temp1 != NULL && temp2 != NULL){
x = temp1->val;
y = temp2->val;
z = x + y;
temp0 = new ListNode(z);
cout << temp0->val << endl; //no error
cout << newLL->val << endl; //error
temp0 = temp0->next;
temp1 = temp1->next;
temp2 = temp2->next;
//concatenate the rest of l1 or l2 onto newLL
if (temp1 == NULL){
while (temp2 != NULL){
y = temp2->val;
temp0 = new ListNode(y);
temp0 = temp0->next;
temp2 = temp2->next;
}
}
if (temp2 == NULL){
while (temp1 != NULL){
x = temp1->val;
temp0 = new ListNode(x);
temp0 = temp0->next;
temp1 = temp1->next;
}
}
}
//loop through and for all numbers > 9, carry the digit
temp0 = newLL;
int r,d;
while (temp0 != NULL) {
if (temp0->val > 9){
d = temp0->val / 10;
r = temp0->val % 10;
temp0->val = d;
temp0 = temp0->next;
temp0->val += r;
} else {
temp0 = temp0->next;
}
}
//return newLL
return newLL;
}
};