Skip to content
Novus Examples
c941 B

C — Linked list (structs, malloc, pointers)

A realistic C program: a singly linked list with a typedef struct, malloc/free memory management, pointer walking, and error handling — for testing highlighters, compilers, and static analysers.

Preview — first 46 linesc
/* A singly linked list of integers: a struct, malloc/free, and pointer walking. */
#include <stdio.h>
#include <stdlib.h>

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

static Node *push(Node *head, int value) {
    Node *node = malloc(sizeof(Node));
    if (node == NULL) {
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    node->value = value;
    node->next = head;
    return node;
}

static long sum(const Node *head) {
    long total = 0;
    for (const Node *n = head; n != NULL; n = n->next) {
        total += n->value;
    }
    return total;
}

static void free_list(Node *head) {
    while (head != NULL) {
        Node *next = head->next;
        free(head);
        head = next;
    }
}

int main(void) {
    Node *list = NULL;
    for (int i = 1; i <= 5; i++) {
        list = push(list, i * i);
    }
    printf("sum of squares = %ld\n", sum(list));
    free_list(list);
    return 0;
}

Specifications

Language
C
Kind
realistic snippet
Lines
45
Encoding
UTF-8
Line Endings
LF

What is a .c file?

C (.c) is a plain-text source file for the C programming language — a low-level, statically typed, compiled language that maps closely to hardware. It underpins operating systems, embedded firmware, and language runtimes, using manual memory management, pointers, structs, and the preprocessor.

How to use this file

Use an example .c file to test syntax highlighters, C compilers (gcc, clang) and their diagnostics, static analysers, formatters (clang-format), and parser or highlighting tooling.

Generated by generation/code_samples.py. Free for any use, no attribution required — license.