Search⌘ K
AI Features

Generic Linked List

Explore how to implement generic linked lists in C by using void pointers to store any data type. Understand the importance of dynamic memory allocation and how to manage pointers to create flexible and reusable list structures.

Introduction

Linked lists are one of the best examples of why void pointers are useful.

Recall that our previous implementation of linked lists assumes that the values are integers.

typedef struct SList
{
    int value;
    struct SList* next;
} TList;

However, we may want a linked list of float values or even strings. What would be the solution? Defining multiple structures like TListInteger, TListFloat, and TListString isn’t ideal. We’d have to implement the list functions three times, once for each structure. They would be almost identical, with the only exception being the list’s type or perhaps how they handle the value field.

Generic linked lists

The solution is to change the value field from a value to a pointer. Then, we can turn this pointer into a void* by making it accept any data type.

typedef struct SGenericList
{
    void* value;
    struct SGenericList* next;
} TGenericList;
...