Rozdział 45 - zadanie domowe B
Ostatnio zmodyfikowano 2019-08-15 14:22
Brys Temat założony przez niniejszego użytkownika |
Rozdział 45 - zadanie domowe B » 2019-08-15 13:10:44 Nie wiem za bardzo jak się zabrać za to zadanie. Wpadłem na pomysł, żeby w jakiś sposób zapisywać adres ostatnio dodanego elementu listy, żeby za każdym razem nie trzeba było przechodzić przez całą listę, tylko nie wiem jak to zrobić. Lista * ostatni( Lista * lista ) { if( lista ) while( lista->ogon ) lista = lista->ogon; return lista; }
void dodajKoniec( Lista *& lista, int liczba ) { Lista * nowy = new Lista; nowy->liczba = liczba; nowy->ogon = nullptr; if( lista ) ostatni( lista )->ogon = nowy; else lista = nowy; }
Nie bardzo też rozumiem co tu się dzieje po kolei. Jak działa na przykład ten fragment while( lista->ogon ) lista = lista->ogon; |
|
pekfos |
» 2019-08-15 14:00:29 Wpadłem na pomysł, żeby w jakiś sposób zapisywać adres ostatnio dodanego elementu listy, żeby za każdym razem nie trzeba było przechodzić przez całą listę, tylko nie wiem jak to zrobić. |
Nie wiesz jak to zapisać, czy nie wiesz gdzie to zapisać? Jak działa na przykład ten fragment while( lista->ogon ) lista = lista->ogon; |
Zwróć uwagę, że lista nie jest przekazana do funkcji przez referencję, więc dubluje jako zmienna lokalna. Nie wiem co tu napisać więcej, niż tylko przetłumaczyć kod dosłownie na polski: "dopóki `lista` ma ogon, niech `lista` to jej ogon", więc skończysz z węzłem bez ogona, wiec ostatnim na liście. |
|
Brys Temat założony przez niniejszego użytkownika |
» 2019-08-15 14:10:30 Nie wiem skąd mam wziąć adres ostatniego węzła na liście |
|
pekfos |
» 2019-08-15 14:22:06 Jeśli lista jest pusta, to nullptr, jeśli nie jest pusta, to sam dodałeś element, więc powinieneś wiedzieć jaki miał adres. |
|
« 1 » |