Тема: Додавання двох чисел у форматі linked list
Є два числа у форматі linked list записані в зворотному порядку, треба їх додати і повернути в тому ж форматі.
Роблю ось так:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* new_l1 = l1;
ListNode* new_l2 = l2;
int rest { 0 };
while (new_l1 && new_l2) {
int item = new_l1->val + new_l2->val + rest;
if (item < 10) {
new_l1->val = item;
rest = 0;
} else {
rest = item / 10;
new_l1->val = item % 10;
}
new_l1 = new_l1->next;
new_l2 = new_l2->next;
}
if (new_l2) {
while (new_l2) {
int item = new_l2->val + rest;
if (item < 10) {
new_l1 = new ListNode(item);
rest = 0;
} else {
rest = item / 10;
new_l1 = new ListNode(item % 10);
}
new_l2 = new_l2->next;
new_l1 = new_l1->next;
}
} else if(new_l1) {
while (new_l1) {
int item = new_l1->val + rest;
if (item < 10) {
new_l1->val = item;
rest = 0;
} else {
rest = item /10;
new_l1->val = item % 10;
}
new_l1 = new_l1->next;
}
}
if (rest > 0) {
new_l1 = new ListNode(rest);
}
return l1;
При переліках різної довжини губиться перша цифра числа (остання для переліку).