Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Gjennomgang og Visning av en Lenket Liste | Implementering av Datastrukturer
Mestre C-strukturer

bookGjennomgang og Visning av en Lenket Liste

Etter at vi har lært hvordan vi oppretter og kobler sammen noder, må vi kontrollere at en slik liste fungerer korrekt!

For å gjøre dette, skriver vi en enkel funksjon som viser hele listen.

Funksjonen mottar en peker til minneområdet der hodet (første node) i listen er lagret.

void printList(struct Node* head) {}

Deretter opprettes en midlertidig node current, som vi bruker til å gå gjennom hele listen. Innholdet i current-noden vil være lik innholdet i den nåværende listenoden.

struct Node* current = head;

For å iterere gjennom listen bruker vi en while(){}-løkke med nødvendig betingelse, nemlig til vi finner en node hvor next-feltet er NULL.

Note
Merk

Den temp (midlertidige) noden fungerer som en buffernode. Den brukes til å midlertidig lagre (og slette) innholdet i den nåværende noden. Hvis vi umiddelbart sletter den nåværende noden, mister vi forbindelsen til neste node, og dermed tilgangen til listen.

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

Inne i løkken viser vi innholdet i data-feltet til den nåværende noden og endrer next-feltet for å gå videre til neste node.

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

Så snart en node blir funnet hvor next-feltet er lik NULL, vil løkken stoppe å vise innholdet i nodene, og funksjonen vil avsluttes.

Oppgave

Swipe to start coding

Implementer en enkel enkeltlenket liste med dynamisk minneallokering. Oppgaven er å fullføre funksjonene printList og freeList.

  1. Implementer en funksjon printList med én parameter struct Node* head.

    • Inne i printList, deklarer en variabel current og initialiser den til head.
    • Bruk en while-løkke for å iterere så lenge current ikke er NULL.
    • I hver iterasjon, skriv ut data-feltet til current og flytt current til neste node.
    • Etter løkken, skriv ut et linjeskift for å skille utdataene.
  2. Inne i freeList, deklarer en variabel current og initialiser den til head.

    • Bruk en while-løkke for å iterere så lenge current ikke er NULL.
    • Inne i løkken, lagre current i en midlertidig variabel temp.
    • Flytt current til neste node.
    • Frigjør minnet som er allokert for temp.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 4
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

bookGjennomgang og Visning av en Lenket Liste

Sveip for å vise menyen

Etter at vi har lært hvordan vi oppretter og kobler sammen noder, må vi kontrollere at en slik liste fungerer korrekt!

For å gjøre dette, skriver vi en enkel funksjon som viser hele listen.

Funksjonen mottar en peker til minneområdet der hodet (første node) i listen er lagret.

void printList(struct Node* head) {}

Deretter opprettes en midlertidig node current, som vi bruker til å gå gjennom hele listen. Innholdet i current-noden vil være lik innholdet i den nåværende listenoden.

struct Node* current = head;

For å iterere gjennom listen bruker vi en while(){}-løkke med nødvendig betingelse, nemlig til vi finner en node hvor next-feltet er NULL.

Note
Merk

Den temp (midlertidige) noden fungerer som en buffernode. Den brukes til å midlertidig lagre (og slette) innholdet i den nåværende noden. Hvis vi umiddelbart sletter den nåværende noden, mister vi forbindelsen til neste node, og dermed tilgangen til listen.

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

Inne i løkken viser vi innholdet i data-feltet til den nåværende noden og endrer next-feltet for å gå videre til neste node.

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

Så snart en node blir funnet hvor next-feltet er lik NULL, vil løkken stoppe å vise innholdet i nodene, og funksjonen vil avsluttes.

Oppgave

Swipe to start coding

Implementer en enkel enkeltlenket liste med dynamisk minneallokering. Oppgaven er å fullføre funksjonene printList og freeList.

  1. Implementer en funksjon printList med én parameter struct Node* head.

    • Inne i printList, deklarer en variabel current og initialiser den til head.
    • Bruk en while-løkke for å iterere så lenge current ikke er NULL.
    • I hver iterasjon, skriv ut data-feltet til current og flytt current til neste node.
    • Etter løkken, skriv ut et linjeskift for å skille utdataene.
  2. Inne i freeList, deklarer en variabel current og initialiser den til head.

    • Bruk en while-løkke for å iterere så lenge current ikke er NULL.
    • Inne i løkken, lagre current i en midlertidig variabel temp.
    • Flytt current til neste node.
    • Frigjør minnet som er allokert for temp.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 4
single

single

some-alt