Het Doorlopen en Weergeven van een Gekoppelde Lijst
Nadat we hebben geleerd hoe we knooppunten kunnen aanmaken en verbinden, moeten we controleren of zo'n lijst correct werkt!
Hiervoor schrijven we een eenvoudige functie die de volledige lijst weergeeft.
De functie accepteert een pointer naar het geheugenadres waar het hoofd- (eerste) knooppunt van de lijst is opgeslagen.
void printList(struct Node* head) {}
Daarna wordt een tijdelijk knooppunt current aangemaakt, waarmee we door de hele lijst zullen lopen. De inhoud van het huidige knooppunt zal gelijk zijn aan de inhoud van het huidige lijstknooppunt.
struct Node* current = head;
Om door de lijst te itereren, gebruiken we de while(){}-lus met de benodigde voorwaarde, namelijk totdat een knooppunt wordt gevonden waarvan het next-veld NULL is.
Het temp (tijdelijke) knooppunt fungeert als een bufferknooppunt. Het is nodig om tijdelijk de inhoud van het huidige knooppunt op te slaan (en te verwijderen). Als we het huidige knooppunt direct wissen, verliezen we de verbinding met het volgende knooppunt, wat betekent dat de toegang tot de lijst verloren gaat.
while (current != NULL) { }
printf("\n");
Binnen de lus tonen we de inhoud van het data-veld van het huidige knooppunt en passen we het next-veld aan om naar het volgende knooppunt te gaan.
printf("%d ", current->data);
current = current->next;
Zodra een knooppunt wordt gevonden waarvan het next-veld gelijk is aan NULL, stopt de lus met het weergeven van de inhoud van de knooppunten en eindigt de functie.
Swipe to start coding
Implementeer een eenvoudige enkelvoudig gekoppelde lijst met dynamische geheugenallocatie. De opdracht is om de functies printList en freeList te voltooien.
-
Implementeer een functie
printListmet één parameterstruct Node* head.- Declareer binnen
printListeen variabelecurrenten initialiseer deze methead. - Gebruik een
while-lus om te itereren zolangcurrentnietNULLis. - Print in elke iteratie het
data-veld vancurrenten verplaatscurrentnaar de volgende node. - Print na de lus een newline-karakter om de uitvoer te scheiden.
- Declareer binnen
-
Declareer binnen
freeListeen variabelecurrenten initialiseer deze methead.- Gebruik een
while-lus om te itereren zolangcurrentnietNULLis. - Sla binnen de lus
currentop in een tijdelijke variabeletemp. - Verplaats
currentnaar de volgende node. - Maak het geheugen vrij dat is toegewezen aan
temp.
- Gebruik een
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 4.35
Het Doorlopen en Weergeven van een Gekoppelde Lijst
Veeg om het menu te tonen
Nadat we hebben geleerd hoe we knooppunten kunnen aanmaken en verbinden, moeten we controleren of zo'n lijst correct werkt!
Hiervoor schrijven we een eenvoudige functie die de volledige lijst weergeeft.
De functie accepteert een pointer naar het geheugenadres waar het hoofd- (eerste) knooppunt van de lijst is opgeslagen.
void printList(struct Node* head) {}
Daarna wordt een tijdelijk knooppunt current aangemaakt, waarmee we door de hele lijst zullen lopen. De inhoud van het huidige knooppunt zal gelijk zijn aan de inhoud van het huidige lijstknooppunt.
struct Node* current = head;
Om door de lijst te itereren, gebruiken we de while(){}-lus met de benodigde voorwaarde, namelijk totdat een knooppunt wordt gevonden waarvan het next-veld NULL is.
Het temp (tijdelijke) knooppunt fungeert als een bufferknooppunt. Het is nodig om tijdelijk de inhoud van het huidige knooppunt op te slaan (en te verwijderen). Als we het huidige knooppunt direct wissen, verliezen we de verbinding met het volgende knooppunt, wat betekent dat de toegang tot de lijst verloren gaat.
while (current != NULL) { }
printf("\n");
Binnen de lus tonen we de inhoud van het data-veld van het huidige knooppunt en passen we het next-veld aan om naar het volgende knooppunt te gaan.
printf("%d ", current->data);
current = current->next;
Zodra een knooppunt wordt gevonden waarvan het next-veld gelijk is aan NULL, stopt de lus met het weergeven van de inhoud van de knooppunten en eindigt de functie.
Swipe to start coding
Implementeer een eenvoudige enkelvoudig gekoppelde lijst met dynamische geheugenallocatie. De opdracht is om de functies printList en freeList te voltooien.
-
Implementeer een functie
printListmet één parameterstruct Node* head.- Declareer binnen
printListeen variabelecurrenten initialiseer deze methead. - Gebruik een
while-lus om te itereren zolangcurrentnietNULLis. - Print in elke iteratie het
data-veld vancurrenten verplaatscurrentnaar de volgende node. - Print na de lus een newline-karakter om de uitvoer te scheiden.
- Declareer binnen
-
Declareer binnen
freeListeen variabelecurrenten initialiseer deze methead.- Gebruik een
while-lus om te itereren zolangcurrentnietNULLis. - Sla binnen de lus
currentop in een tijdelijke variabeletemp. - Verplaats
currentnaar de volgende node. - Maak het geheugen vrij dat is toegewezen aan
temp.
- Gebruik een
Oplossing
Bedankt voor je feedback!
single