Sumowanie elementów dwóch list jednokierunkowych

0

Mam problem z napisaniem programu, którego zadaniem jest zsumowanie elementów dwóch list jednokierunkowych. Szukałem rozwiązania w sieci, ale żadne nie pasuje do mojego problemu. Mam taką klasę:

class list{
    private:
        struct ele{
            int num;
            ele *next;
            ele(){
                next=0;
            }
        };

    public:
        list();
        ele *first;
        void add (int num);
        void print();
};

Stworzyłem dwie listy z tej klasy, w których mam zapisane liczby, cyfra po cyfrze. Nie mam tylko pojęcia, jak napisać funkcję sumującą. Czy zrobić ją w klasie czy jako osobną funkcję? Jak się w ogóle za to zabrać?

0

Co dokładnie to ma robić? Inaczej mówiąc, co jest wynikiem?

0

Nie, nie powinna być w klasie listy, bo sumowanie nie ma nic wspólnego z operacjami na liście per se (http://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialności).

Jak się w ogóle za to zabrać?

A jak sumujesz na kartce? Cyfra po cyfrze, od końca.
Natomiast lepiej tutaj sprawdziłaby się lista dwukierunkowa (jako że musimy sumować od końca), chyba że te cyfry już od początku zapisujesz w odwrotnej kolejności.

0

Cokolwiek. Suma może być tablicą, nowa listą, obojętnie. Przy czym nadal, każda cyfra musi być osobno. Ogólny zarys funkcji znam, jakie warunki itd. Tylko nie mam pojęcia jak to zacząć.
[edit]
Liczby od razu zapisałem sobie do list w odwrotnej kolejności.

Mam na razie pomysł zrobienia funkcji w klasie. Tworzę nową listę, która będzie zawierała sumę. Jako pierwszy element robię

 add(a->first->num + b->first->num)

. Nie mam tylko pojęcia jak zrobić, żeby sumowało kolejne cyfry.

0

No musisz przetraversować ten kontener element po elemencie.

0

dodaj metody begin, end i wtedy użyj std::accumulate

0

Funkcję udało mi się napisać. Mam tylko jeden problem- jak wiadomo, ostatnia lista jest jednokierunkowa i cyfry są w odwrotnej kolejności. Jak mogę "obrócić" taką listę?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0