Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Gennemløb og Visning af en Kædet Liste | Implementering af Datastrukturer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Beherskelse af C Structs

bookGennemløb og Visning af en Kædet Liste

Efter vi har lært at oprette og forbinde noder, skal vi kontrollere, at en sådan liste fungerer korrekt!

For at gøre dette, lad os skrive en simpel funktion, der vil vise hele listen.

Funktionen modtager en pointer til det hukommelsesområde, hvor hovedet (første node) af listen er gemt.

void printList(struct Node* head) {}

Derefter oprettes en midlertidig node current, som vi bruger til at gennemgå hele listen. Indholdet af den aktuelle node vil være lig med indholdet af den aktuelle liste-node.

struct Node* current = head;

For at iterere gennem listen bruger vi while(){}-løkken med den nødvendige betingelse, nemlig indtil en node findes, hvis next-felt er NULL.

Note
Bemærk

temp (midlertidig) node fungerer som en buffernode. Den bruges til midlertidigt at gemme (og slette) indholdet af den aktuelle node. Hvis vi straks rydder den aktuelle node, mister vi forbindelsen til den næste node, hvilket betyder, at adgangen til listen går tabt.

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

Inde i løkken viser vi indholdet af data-feltet for den aktuelle node og ændrer next-feltet for at gå videre til den næste node.

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

Så snart en node findes, hvis next-felt er lig med NULL, stopper løkken med at vise indholdet af noderne, og funktionen afsluttes.

Opgave

Swipe to start coding

Implementér en simpel enkeltkædet liste med dynamisk hukommelsesallokering. Opgaven er at færdiggøre funktionerne printList og freeList.

  1. Implementér en funktion printList med en enkelt parameter struct Node* head.

    • Inde i printList, deklarér en variabel current og initialisér den til head.
    • Brug en while-løkke til at iterere, så længe current ikke er NULL.
    • I hver iteration udskrives feltet data fra current, og current flyttes til næste node.
    • Efter løkken udskrives et linjeskift for at adskille outputtet.
  2. Inde i freeList, deklarér en variabel current og initialisér den til head.

    • Brug en while-løkke til at iterere, så længe current ikke er NULL.
    • Inde i løkken gemmes current i en midlertidig variabel temp.
    • Flyt current til næste node.
    • Frigør den hukommelse, der er allokeret til temp.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you show me the complete function code?

How does this function handle an empty list?

Can you explain what happens if the list has only one node?

close

bookGennemløb og Visning af en Kædet Liste

Stryg for at vise menuen

Efter vi har lært at oprette og forbinde noder, skal vi kontrollere, at en sådan liste fungerer korrekt!

For at gøre dette, lad os skrive en simpel funktion, der vil vise hele listen.

Funktionen modtager en pointer til det hukommelsesområde, hvor hovedet (første node) af listen er gemt.

void printList(struct Node* head) {}

Derefter oprettes en midlertidig node current, som vi bruger til at gennemgå hele listen. Indholdet af den aktuelle node vil være lig med indholdet af den aktuelle liste-node.

struct Node* current = head;

For at iterere gennem listen bruger vi while(){}-løkken med den nødvendige betingelse, nemlig indtil en node findes, hvis next-felt er NULL.

Note
Bemærk

temp (midlertidig) node fungerer som en buffernode. Den bruges til midlertidigt at gemme (og slette) indholdet af den aktuelle node. Hvis vi straks rydder den aktuelle node, mister vi forbindelsen til den næste node, hvilket betyder, at adgangen til listen går tabt.

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

Inde i løkken viser vi indholdet af data-feltet for den aktuelle node og ændrer next-feltet for at gå videre til den næste node.

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

Så snart en node findes, hvis next-felt er lig med NULL, stopper løkken med at vise indholdet af noderne, og funktionen afsluttes.

Opgave

Swipe to start coding

Implementér en simpel enkeltkædet liste med dynamisk hukommelsesallokering. Opgaven er at færdiggøre funktionerne printList og freeList.

  1. Implementér en funktion printList med en enkelt parameter struct Node* head.

    • Inde i printList, deklarér en variabel current og initialisér den til head.
    • Brug en while-løkke til at iterere, så længe current ikke er NULL.
    • I hver iteration udskrives feltet data fra current, og current flyttes til næste node.
    • Efter løkken udskrives et linjeskift for at adskille outputtet.
  2. Inde i freeList, deklarér en variabel current og initialisér den til head.

    • Brug en while-løkke til at iterere, så længe current ikke er NULL.
    • Inde i løkken gemmes current i en midlertidig variabel temp.
    • Flyt current til næste node.
    • Frigør den hukommelse, der er allokeret til temp.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 4
single

single

some-alt