Gjennomgang 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.
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.
Swipe to start coding
Implementer en enkel enkeltlenket liste med dynamisk minneallokering. Oppgaven er å fullføre funksjonene printList og freeList.
-
Implementer en funksjon
printListmed én parameterstruct Node* head.- Inne i
printList, deklarer en variabelcurrentog initialiser den tilhead. - Bruk en
while-løkke for å iterere så lengecurrentikke erNULL. - I hver iterasjon, skriv ut
data-feltet tilcurrentog flyttcurrenttil neste node. - Etter løkken, skriv ut et linjeskift for å skille utdataene.
- Inne i
-
Inne i
freeList, deklarer en variabelcurrentog initialiser den tilhead.- Bruk en
while-løkke for å iterere så lengecurrentikke erNULL. - Inne i løkken, lagre
currenti en midlertidig variabeltemp. - Flytt
currenttil neste node. - Frigjør minnet som er allokert for
temp.
- Bruk en
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Gjennomgang 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.
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.
Swipe to start coding
Implementer en enkel enkeltlenket liste med dynamisk minneallokering. Oppgaven er å fullføre funksjonene printList og freeList.
-
Implementer en funksjon
printListmed én parameterstruct Node* head.- Inne i
printList, deklarer en variabelcurrentog initialiser den tilhead. - Bruk en
while-løkke for å iterere så lengecurrentikke erNULL. - I hver iterasjon, skriv ut
data-feltet tilcurrentog flyttcurrenttil neste node. - Etter løkken, skriv ut et linjeskift for å skille utdataene.
- Inne i
-
Inne i
freeList, deklarer en variabelcurrentog initialiser den tilhead.- Bruk en
while-løkke for å iterere så lengecurrentikke erNULL. - Inne i løkken, lagre
currenti en midlertidig variabeltemp. - Flytt
currenttil neste node. - Frigjør minnet som er allokert for
temp.
- Bruk en
Løsning
Takk for tilbakemeldingene dine!
single