Складення чисел у списках

Задача

Є два списки в яких кожен елемент містить одну цифру числа. Числа зберігаються у зворотньому порядку, тобто йде найвагоміша цифра, останньою цифра що позначає одиниці. Треба написати функцію що складає ці списки і повертає новий список як результат складення.

Наприклад (9->3->5) + (8->7) повенно давати результат (1->0->2->2).

Рішення

    1. list* AddLists(list *l1, list *l2)
    2. {
    3.   list *r = new list();
    4.   int carry = 0, val = 0;
    5.   for (; l1 || l2 || carry; l1 = l1->next, l2 = l2->next)
    6.   {
    7.     val = carry + l1 ? l1->val : 0 + l2 ? l2->val : 0;
    8.     carry = val / 10;
    9.     val %= 10;
    10.     r->AddItem(val);
    11.   }
    12.   return r;
    13. }

 

* This source code was highlighted with Source Code Highlighter.

Залишити відповідь

Зайти з допомогою: