R. 45 - zadanie domowe - ppkt b
Ostatnio zmodyfikowano 2019-07-03 22:07
oriv Temat założony przez niniejszego użytkownika |
» 2019-07-03 21:56:00 Sugerując się wskazówka do Problemu 3, ze lista nie jest już wskaźnikiem na węzeł listy, wprowadziłem wskaźnik Wezel *wezel (jest to wskaźnik lista z przykładu do zadania domowego) tylko po to, by wyświetlić wszystkie wprowadzone liczby. Pytanie czy to dobry pomysł? czy da się to rozwiązać za pomocą samej struktury Lista? Kod mi w dalszym ciągu nie działa.. #include <iostream>
struct Wezel { Wezel * ogon; int liczba; }; struct Lista { Wezel * poczatek; Wezel * koniec; };
void utworz( Lista & lista ) { lista.poczatek = NULL; lista.koniec = NULL; }
void wypisz( Wezel * wezel ) { if( wezel ) { std::cout << wezel->liczba << ", "; wypisz( wezel->ogon ); } }
Wezel * ostatni( Wezel * wezel ) { if( wezel ) while( wezel->ogon ) wezel = wezel->ogon; return wezel; }
void dodajKoniec( Lista & lista, Wezel *& wezel, int liczba ) { Wezel * nowy = new Wezel; nowy->liczba = liczba; nowy->ogon = NULL; if( lista.poczatek ) { ostatni( wezel )->ogon = nowy; nowy->ogon = nowy; lista.koniec = nowy->ogon; } else { lista.poczatek = nowy; wezel = nowy; } }
void zniszcz( Lista & lista, Wezel *& wezel ) { while( lista.poczatek ) { delete lista.poczatek; } while( wezel ) { Wezel * tmp = wezel; wezel = wezel->ogon; delete tmp; } lista.poczatek = NULL; lista.koniec = NULL; wezel = NULL; }
int main() { int liczba; Lista lista; utworz( lista ); Wezel * wezel = NULL; std::cout << "Podaj liczby, 0 lub blad konczy:\n"; while( std::cin >> liczba && liczba ) dodajKoniec( lista, wezel, liczba ); std::cout << "Koniec, oto liczby:\n"; wypisz( wezel ); zniszcz( lista, wezel ); }
|
|
pekfos |
» 2019-07-03 22:07:02 czy da się to rozwiązać za pomocą samej struktury Lista? |
Biorąc pod uwagę, że w poprawnie wykonanym zadaniu wezel jest zawsze równe lista.poczatek - tak, a nawet nie ma sensu robić tego inaczej. Oryginalnie listę opisywał tylko wskaźnik na pierwszy element, Ty bardzo trafnie opisałeś listę osobną strukturą, ale usiłujesz to zrobić obok poprzedniego rozwiązania, a nie zamiast. |
|
1 « 2 » |