Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Linkitetyn Listan Läpikäynti ja Näyttäminen | Tietorakenteiden Toteuttaminen
C-Rakenteet
Osio 5. Luku 4
single

single

Linkitetyn Listan Läpikäynti ja Näyttäminen

Pyyhkäise näyttääksesi valikon

Kun olemme oppineet luomaan ja yhdistämään solmuja, meidän täytyy tarkistaa, että tällainen lista toimii oikein!

Tätä varten kirjoitetaan yksinkertainen funktio, joka näyttää koko listan.

Funktio vastaanottaa osoittimen muistialueeseen, jossa listan pään (ensimmäisen) solmun tiedot sijaitsevat.

void printList(struct Node* head) {}

Tämän jälkeen luodaan väliaikainen solmu current, jonka avulla käydään koko lista läpi. Current-solmun sisältö vastaa nykyisen listasolmun sisältöä.

struct Node* current = head;

Listan läpikäyntiin käytetään while(){} -silmukkaa tarvittavalla ehdolla, eli kunnes löytyy solmu, jonka next-kenttä on NULL.

Note
Huomio

Temp (väliaikainen) solmu toimii puskurisolmuna. Sitä tarvitaan nykyisen solmun sisällön väliaikaiseen tallentamiseen (ja poistamiseen). Jos tyhjennämme nykyisen solmun heti, menetämme yhteyden seuraavaan solmuun, mikä tarkoittaa, että pääsy listaan menetetään.

while (current != NULL) { }
printf("\n");

Silmukan sisällä näytetään nykyisen solmun data-kentän sisältö ja muutetaan next-kenttää siirtyäksemme seuraavaan solmuun.

printf("%d ", current->data);
current = current->next;

Heti kun solmu löytyy, jonka next-kenttä on NULL, silmukka lopettaa solmujen sisällön näyttämisen ja funktio päättyy.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Toteuta yksinkertainen yksisuuntainen linkitetty lista käyttäen dynaamista muistinvarausta. Tehtävänä on täydentää funktiot printList ja freeList.

  1. Toteuta funktio printList, jonka parametrina on struct Node* head.

    • Määrittele printList-funktion sisällä muuttuja current ja aseta se osoittamaan head-osoitteeseen.
    • Käytä while-silmukkaa, joka jatkuu niin kauan kuin current ei ole NULL.
    • Jokaisella silmukan kierroksella tulosta current-muuttujan data-kenttä ja siirrä current seuraavaan solmuun.
    • Silmukan jälkeen tulosta rivinvaihto erottelemaan tuloste.
  2. freeList-funktion sisällä määrittele muuttuja current ja aseta se osoittamaan head-osoitteeseen.

    • Käytä while-silmukkaa, joka jatkuu niin kauan kuin current ei ole NULL.
    • Silmukan sisällä tallenna current väliaikaiseen muuttujaan temp.
    • Siirrä current seuraavaan solmuun.
    • Vapauta temp-muuttujan osoittama muisti.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt