Почему мой список не добавляет последний узел после переноса?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему мой список не добавляет последний узел после переноса?

Сообщение Anonymous »

В настоящее время я пытаюсь ответить на вопрос «Добавьте два числа из leetcode», мое решение, похоже, работает так, как я ожидаю, однако в тех случаях, когда требуется мой последний перенос int, он не добавляется в конец моего списка в последнем операторе if. .

Код: Выделить всё

class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int carry = 0;
ListNode* ans = l1;
while(l1 || l2){
if(l1 == nullptr) l1 = new ListNode();
if(l1 == nullptr && l2){
l1 -> val = (l2 -> val + carry) % 10;
carry = (carry + l2 -> val) / 10;
l2 = l2 -> next;
}else if(l2 == nullptr && l1){
int tempL1Val = l1 -> val;
l1 -> val = (l1 -> val + carry) % 10;
carry = (carry + tempL1Val) / 10;
}else{
int tempL1Val = l1 -> val;
l1 -> val = (l1 -> val + l2 -> val + carry) % 10;
carry = (tempL1Val + l2 -> val + carry) / 10;
l2 = l2 -> next;
}
l1 = l1 -> next;
}

if(carry){
l1 = new ListNode();
l1 -> val = carry;
}
return ans;
}
};
Тестовые примеры, в которых это не удалось:

Код: Выделить всё

l1 = [9,9,9,9,9,9,9]
l2 = [9,9,9,9]
output = [8,9,9,9,0,0,0]
expected_output = [8,9,9,9,0,0,0,1]

Я проверил до и после, и новый узел действительно существует, однако он не добавляется в мой список, когда я запускаю код.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -the-carry
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»