Gennemlø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.
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.
Swipe to start coding
Implementér en simpel enkeltkædet liste med dynamisk hukommelsesallokering. Opgaven er at færdiggøre funktionerne printList og freeList.
-
Implementér en funktion
printListmed en enkelt parameterstruct Node* head.- Inde i
printList, deklarér en variabelcurrentog initialisér den tilhead. - Brug en
while-løkke til at iterere, så længecurrentikke erNULL. - I hver iteration udskrives feltet
datafracurrent, ogcurrentflyttes til næste node. - Efter løkken udskrives et linjeskift for at adskille outputtet.
- Inde i
-
Inde i
freeList, deklarér en variabelcurrentog initialisér den tilhead.- Brug en
while-løkke til at iterere, så længecurrentikke erNULL. - Inde i løkken gemmes
currenti en midlertidig variabeltemp. - Flyt
currenttil næste node. - Frigør den hukommelse, der er allokeret til
temp.
- Brug en
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Fantastisk!
Completion rate forbedret til 4.35
Gennemlø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.
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.
Swipe to start coding
Implementér en simpel enkeltkædet liste med dynamisk hukommelsesallokering. Opgaven er at færdiggøre funktionerne printList og freeList.
-
Implementér en funktion
printListmed en enkelt parameterstruct Node* head.- Inde i
printList, deklarér en variabelcurrentog initialisér den tilhead. - Brug en
while-løkke til at iterere, så længecurrentikke erNULL. - I hver iteration udskrives feltet
datafracurrent, ogcurrentflyttes til næste node. - Efter løkken udskrives et linjeskift for at adskille outputtet.
- Inde i
-
Inde i
freeList, deklarér en variabelcurrentog initialisér den tilhead.- Brug en
while-løkke til at iterere, så længecurrentikke erNULL. - Inde i løkken gemmes
currenti en midlertidig variabeltemp. - Flyt
currenttil næste node. - Frigør den hukommelse, der er allokeret til
temp.
- Brug en
Løsning
Tak for dine kommentarer!
single