single
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 riktig!
For å gjøre dette, skriver vi en enkel funksjon som viser hele listen.
Funksjonen tar imot 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 den midlertidige 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 avsluttes.
Sveip for å begynne å kode
Implementer en enkel enkeltlenket liste med dynamisk minneallokering. Oppgaven er å fullføre funksjonene printList og freeList.
-
Implementer en funksjon
printListmed én parameterstruct Node* head.- Deklarer en variabel
currentinne iprintListog 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 å separere utdataene.
- Deklarer en variabel
-
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