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