Linked List

Learn about Linked List (Data Structure) in C.

Linked List:

A linked list is a fundamental data structure in computer science and programming, and it can be implemented in the C programming language. Linked lists provide a way to store and manipulate a collection of data elements, where each element (node) contains both the actual data and a reference (a pointer) to the next node in the list.

Here's a basic implementation of a singly linked list in C:

c Copy Code
#include <stdio.h>
#include <stdlib.h>

// Define the structure for a node
struct Node {
    int data;
    struct Node* next;
};

// Function to create a new node
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// Function to insert a node at the end of the list
void append(struct Node** head, int data) {
    struct Node* newNode = createNode(data);
    if (*head == NULL) {
        *head = newNode;
        return;
    }
    struct Node* current = *head;
    while (current->next != NULL) {
        current = current->next;
    }
    current->next = newNode;
}

// Function to display the linked list
void display(struct Node* head) {
    struct Node* current = head;
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->next;
    }
    printf("NULL\n");
}

// Function to free the memory used by the linked list
void freeList(struct Node* head) {
    struct Node* current = head;
    while (current != NULL) {
        struct Node* next = current->next;
        free(current);
        current = next;
    }
}

int main() {
    struct Node* head = NULL;
    append(&head, 1);
    append(&head, 2);
    append(&head, 3);
    append(&head, 4);

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

// Don't forget to free memory when you're done with the list
    freeList(head);

    return 0;
}

In this example, we define a 'struct Node' to represent a node in the linked list. The 'createNode' function allocates memory for a new node and initializes it with the given data. The 'append' function inserts a new node at the end of the list. The 'display' function is used to print the linked list, and the 'freeList' function deallocates the memory used by the list when you're done with it.

Output:
Linked List: 1 -> 2 -> 3 -> 4 -> NULL

* This is a basic example of a singly linked list. There are also doubly linked lists and circular linked lists, which have different node structures and traversal methods.

What's Next?

We actively create content for our YouTube channel and consistently upload or share knowledge on the web platform.