C语言实现链表详解(适合初学者)

一、链表基础概念

链表是由一系列节点组成的链式存储结构。每个节点包含两个部分:

  • 数据域:存储实际数据

  • 指针域:存储下一个节点的地址

类比:把链表想象成一列火车,每个车厢(节点)装载货物(数据),车厢之间通过挂钩(指针)连接。

二、代码结构解析

2.1 节点结构体

c

typedef struct Node {
    int data;     // 数据域(车厢里的货物)
    struct Node* next; // 指针域(连接下一个车厢的挂钩)
} Node;

2.2 核心函数说明

创建新节点

c

Node* getNewNode(int val) {
    Node* p = (Node*)malloc(sizeof(Node));
    p->data = val;
    p->next = NULL;
    return p;
}
  • malloc分配内存空间

  • 初始化数据域和指针域

  • 图示:

    [Node]       [Node]
    | data: 10 | | data: 20 |
    | next:  ─────> next: NULL

插入节点(含虚拟头节点技巧)

c

Node* insert(Node* head, int pos, int val) {
    Node new_head, *p = &new_head, *node = getNewNode(val);
    new_head.next = head; // 创建虚拟头节点
    
    for (int i = 0; i < pos; i++) 
        p = p-&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

维维宝宝最可爱啦QWQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值