一、链表基础概念
链表是由一系列节点组成的链式存储结构。每个节点包含两个部分:
-
数据域:存储实际数据
-
指针域:存储下一个节点的地址
类比:把链表想象成一列火车,每个车厢(节点)装载货物(数据),车厢之间通过挂钩(指针)连接。
二、代码结构解析
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-&