Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozdział 45 - zadanie domowe B

Ostatnio zmodyfikowano 2019-08-15 14:22
Autor Wiadomość
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ć.
 
C/C++
// Zwróć: wskaźnik na ostatni element listy
Lista * ostatni( Lista * lista )
{
    // Przechodzenie po liście *iteracyjnie*
    if( lista )
    while( lista->ogon )
         lista = lista->ogon;
   
    return lista;
}


// Dodaj element na koniec listy
void dodajKoniec( Lista *& lista, int liczba )
{
    // Tworzymy nowy element listy
    Lista * nowy = new Lista;
    nowy->liczba = liczba;
    nowy->ogon = nullptr;
   
    // Dopisujemy na koniec
    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;
P-175018
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.
P-175020
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
P-175022
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.
P-175023
« 1 »
  Strona 1 z 1