Online C Compiler
Openen in de compiler

Nederlandse leereditie

Enkelvoudig gekoppelde lijst in C

Koppel dynamische knopen, werk de kop bij en geef geheugen correct vrij.

Openen in de compiler

Enkelvoudig gekoppelde lijst in C
Koppel dynamische knopen, werk de kop bij en geef geheugen correct vrij.

Elke knoop bevat een waarde en een pointer naar de volgende knoop. head wijst naar de eerste; NULL markeert het einde of een lege lijst. Knoopadressen hoeven niet opeenvolgend te zijn.

Controleer malloc vóór schrijven. Behoud bij invoegen en verwijderen de koppeling met de rest en werk head bij als de eerste knoop verandert. Een waarde zoeken kost een doorloop van O(N).

Bewaar voor het vrijgeven de volgende knoop voordat je free op de huidige aanroept. Test een lege lijst, één knoop en meerdere knopen. Lees geen velden na vrijgave.

Broncode

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node* insertHead(Node *head, int val) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->data = val;
    newNode->next = head;
    return newNode;
}

void printList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        printf("%d -> ", curr->data);
        curr = curr->next;
    }
    printf("NULL\n");
}

void freeList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        Node *temp = curr;
        curr = curr->next;
        free(temp);
    }
}

int main() {
    Node *head = NULL;
    head = insertHead(head, 30);
    head = insertHead(head, 20);
    head = insertHead(head, 10);

    printf("Linked List: ");
    printList(head);

    freeList(head);
    return 0;
}
Openen in de compiler

Verwacht resultaat

Linked List: 10 -> 20 -> 30 -> NULL

Veelgestelde vragen

Waarom blijven code en sommige resultaten Engels?

C-sleutelwoorden, namen, programmacommentaar en verwachte uitvoer blijven gelijk aan het origineel om uitvoerbare code en consistente tests te behouden. Uitleg en instructies zijn vertaald.