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
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