单链表是一种链式存储结构,它由一系列的结点组成,每个结点包含两个部分:数据域和指针域。数据域用来存储数据,指针域用来指向下一个结点。

以下是一个简单的单链表的 C 语言实现:

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

// 定义单链表结构体
struct ListNode {
    int val;           // 数据域
    struct ListNode *next;  // 指针域
};

// 创建单链表
struct ListNode* createList(int arr[], int n) {
    struct ListNode *head = NULL;
    struct ListNode *tail = NULL;

    for (int i = 0; i < n; i++) {
        struct ListNode *node = (struct ListNode*)malloc(sizeof(struct ListNode));
        node->val = arr[i];
        node->next = NULL;

        if (head == NULL) {
            head = tail = node;
        } else {
            tail->next = node;
            tail = node;
        }
    }

    return head;
}

// 遍历单链表
void traverseList(struct ListNode *head) {
    while (head != NULL) {
        printf("%d ", head->val);
        head = head->next;
    }
    printf("\n");
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    struct ListNode *head = createList(arr, n);
    traverseList(head);

    return 0;
}

在上面的代码中,我们首先定义了一个单链表结构体 ListNode,其中包含数据域 val 和指针域 next。然后,我们用 createList 函数创建了一个单链表,该函数接收一个数组和数组长度作为参数,并返回链表的头结点。最后,我们用 traverseList 函数遍历了整个链表并打印出每个结点的值。

上面的代码只是一个简单的实现,实际上,单链表还有很多其他的操作,例如插入结点、删除结点、查找结点等等。但是,以上代码已经可以帮助你理解单链表的基本结构和操作


原文地址: https://www.cveoy.top/t/topic/ho3Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录