Linkitetyn Listan Läpikäynti ja Näyttäminen
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 ottaa vastaan osoittimen muistialueeseen, jossa listan pään (ensimmäisen) solmun tiedot sijaitsevat.
void printList(struct Node* head) {}
Tämän jälkeen luodaan väliaikainen current-solmu, 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.
temp (väliaikainen) solmu toimii puskurisolmuna. Sitä tarvitaan väliaikaiseen tallentamiseen (ja poistamiseen) nykyisen solmun sisällöstä. 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.
Swipe to start coding
Toteuta yksinkertainen yksisuuntainen linkitetty lista dynaamisella muistinvarauksella. Tehtävänä on täydentää funktiot printList ja freeList.
-
Toteuta funktio
printListyhden parametrinstruct Node* headavulla.- Sisällä funktiossa
printList, julista muuttujacurrentja alustaa se arvoonhead. - Käytä
while-silmukkaa, kunnescurrentonNULL. - Jokaisessa silmukan kierroksessa tulosta
current-solmundata-kenttä ja siirräcurrentseuraavaan solmuun. - Silmukan jälkeen tulosta rivinvaihto.
- Sisällä funktiossa
-
Sisällä funktiossa
freeList, julista muuttujacurrentja alustaa se arvoonhead.- Käytä
while-silmukkaa, kuncurrentei oleNULL. - Silmukan sisällä tallenna
currentmuuttujaantemp. - Siirrä
currentseuraavaan solmuun. - Vapauta muisti
temp.
- Käytä
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4.35
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 ottaa vastaan osoittimen muistialueeseen, jossa listan pään (ensimmäisen) solmun tiedot sijaitsevat.
void printList(struct Node* head) {}
Tämän jälkeen luodaan väliaikainen current-solmu, 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.
temp (väliaikainen) solmu toimii puskurisolmuna. Sitä tarvitaan väliaikaiseen tallentamiseen (ja poistamiseen) nykyisen solmun sisällöstä. 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.
Swipe to start coding
Toteuta yksinkertainen yksisuuntainen linkitetty lista dynaamisella muistinvarauksella. Tehtävänä on täydentää funktiot printList ja freeList.
-
Toteuta funktio
printListyhden parametrinstruct Node* headavulla.- Sisällä funktiossa
printList, julista muuttujacurrentja alustaa se arvoonhead. - Käytä
while-silmukkaa, kunnescurrentonNULL. - Jokaisessa silmukan kierroksessa tulosta
current-solmundata-kenttä ja siirräcurrentseuraavaan solmuun. - Silmukan jälkeen tulosta rivinvaihto.
- Sisällä funktiossa
-
Sisällä funktiossa
freeList, julista muuttujacurrentja alustaa se arvoonhead.- Käytä
while-silmukkaa, kuncurrentei oleNULL. - Silmukan sisällä tallenna
currentmuuttujaantemp. - Siirrä
currentseuraavaan solmuun. - Vapauta muisti
temp.
- Käytä
Ratkaisu
Kiitos palautteestasi!
single