X
ďťż

Ładny brzuch

Witam,
Powróciłem niedawno do programu pisanego na zajęciach, i z nudy oraz ciekawości zacząłem kombinacje. Otóż metoda która poprawnie łączyła dwie listy z których pierwsza była nie pusta, w trakcie próby połączenia listy pustej z zapełnioną program nadal się kompiluje ale po dojściu do łączenia, jest przerywany błędem. W jaki sposób sobie z tym fantem poradzić?
struct wezel_t { string wartosc; struct wezel_t *nastepny; }; class Lista { public: struct wezel_t *pierwszy; public: Lista () { pierwszy = NULL; } Lista& operator +=(Lista& list) { struct wezel_t *iter = pierwszy; while (iter->nastepny) { iter = iter->nastepny; } iter->nastepny=list.pierwszy; return *this; } };
Z góry dziękuję za wszelkie sugestie/porady. Pozdrawiam
Użytkownik gorbix edytował ten post 06 wrzesień 2009, 20:52


Lista& operator +=(Lista& list) { struct wezel_t *iter = pierwszy; //gdy lista jest pusta, pierwszy=NULL; //teraz iter=NULL; while (iter->nastepny) //odwołujesz się do nieistniejącego obiektu { iter = iter->nastepny; } iter->nastepny=list.pierwszy; return *this; }

Zrób tak ( i sprawdź bo kod pisany 'z palca' ;) ):
Lista& operator +=(Lista& list) { if ( pierwszy==NULL ) { pierwszy=list.pierwszy; return (*this); } struct wezel_t *iter = pierwszy; while (iter->nastepny) { iter = iter->nastepny; } iter->nastepny=list.pierwszy; return *this; }

Tak właśnie kombinowałem, ale nie wychodziło. Twój kod zadziałał od razu. Dziękuję Ci bardzo za rozwiązanie mojego problemu :) Podrawiam

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •