Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Doorlopen en Weergeven van een Gekoppelde Lijst | Datastructuren Implementeren
C-Structs Beheersen

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

Note
Opmerking

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.

Taak

Swipe to start coding

Implementeer een eenvoudige enkelvoudig gekoppelde lijst met dynamische geheugenallocatie. De opdracht is om de functies printList en freeList te voltooien.

  1. Implementeer een functie printList met één parameter struct Node* head.

    • Declareer binnen printList een variabele current en initialiseer deze met head.
    • Gebruik een while-lus om te itereren zolang current niet NULL is.
    • Print in elke iteratie het data-veld van current en verplaats current naar de volgende node.
    • Print na de lus een newline-karakter om de uitvoer te scheiden.
  2. Declareer binnen freeList een variabele current en initialiseer deze met head.

    • Gebruik een while-lus om te itereren zolang current niet NULL is.
    • Sla binnen de lus current op in een tijdelijke variabele temp.
    • Verplaats current naar de volgende node.
    • Maak het geheugen vrij dat is toegewezen aan temp.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 4
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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?

close

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

Note
Opmerking

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.

Taak

Swipe to start coding

Implementeer een eenvoudige enkelvoudig gekoppelde lijst met dynamische geheugenallocatie. De opdracht is om de functies printList en freeList te voltooien.

  1. Implementeer een functie printList met één parameter struct Node* head.

    • Declareer binnen printList een variabele current en initialiseer deze met head.
    • Gebruik een while-lus om te itereren zolang current niet NULL is.
    • Print in elke iteratie het data-veld van current en verplaats current naar de volgende node.
    • Print na de lus een newline-karakter om de uitvoer te scheiden.
  2. Declareer binnen freeList een variabele current en initialiseer deze met head.

    • Gebruik een while-lus om te itereren zolang current niet NULL is.
    • Sla binnen de lus current op in een tijdelijke variabele temp.
    • Verplaats current naar de volgende node.
    • Maak het geheugen vrij dat is toegewezen aan temp.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 4
single

single

some-alt