R. 45 Struktury - zadanie
Ostatnio zmodyfikowano 2020-06-15 17:47
Yumox Temat założony przez niniejszego użytkownika |
R. 45 Struktury - zadanie » 2020-06-14 21:00:16 Napisałem kod do zadania 2 z tego tematu: struktura struct wskaznik { Lista * ostatnielement; };
int main() { int liczba; Lista * lista = nullptr; wskaznik * element = new wskaznik; std::cout << "Podaj liczby, 0 lub blad konczy:\n"; while( std::cin >> liczba && liczba ) dodajKoniec( lista, liczba, element ); std::cout << "Koniec, oto liczby:\n"; wypisz( lista ); zniszcz( lista ); }
i funkcja dodajKoniec() void dodajKoniec( Lista *& lista, int liczba, wskaznik *& element ) { Lista * nowy = new Lista; nowy->liczba = liczba; nowy->ogon = nullptr; if( lista == 0 ) { lista = nowy; element->ostatnielement = lista; } else { element->ostatnielement->ogon = nowy; element->ostatnielement = nowy; } }
Program działa, jednak moje pytanie brzmi, czy da się to zrobić lepiej, bez dodawania kolejnego argumentu do funkcji dodajKoniec()? Próbowałem tworzyć strukturę wskaźnik (o nazwie element w moim programie) bezpośrednio w funkcji dodajKoniec(), ale program nie działał prawidłowo, być może coś robię źle... |
|
pekfos |
» 2020-06-14 21:05:08 Czemu w swojej strukturze nie trzymasz obu wskaźników? Zamiast dodawać nowy argument, mogłeś po prostu zmienić istniejący. |
|
Yumox Temat założony przez niniejszego użytkownika |
» 2020-06-14 22:57:47 Poprawiłem: struct wskaznik { Lista * ostatnielement; Lista * lista = nullptr; };
void dodajKoniec( int liczba, wskaznik *& element ) { Lista * nowy = new Lista; nowy->liczba = liczba; nowy->ogon = nullptr; if( element->lista == 0 ) { element->lista = nowy; element->ostatnielement = element->lista; } else { element->ostatnielement->ogon = nowy; element->ostatnielement = nowy; } }
int main() { int liczba; wskaznik * element = new wskaznik; std::cout << "Podaj liczby, 0 lub blad konczy:\n"; while( std::cin >> liczba && liczba ) dodajKoniec( liczba, element ); std::cout << "Koniec, oto liczby:\n"; wypisz( element->lista ); zniszcz( element->lista ); }
|
|
pekfos |
» 2020-06-15 17:47:09 To jest oczekiwane rozwiązanie zadania. |
|
« 1 » |