链表结构详解
一、单链表的定义
单链表是线性表的链式存储结构。它通过一组任意的存储单元来存储数据元素,并通过指针建立数据元素之间的关系。每个结点包含数据域和指针域,其中指针域指向后继结点的地址。
typedef struct LNode {
ElemType data; // 数据域
struct LNode* next; // 指针域
} LNode, *LinkList;
注意区分 LNode*(表示一个结点)与 LinkList(表示整个链表)。由于元素在内存中离散分布,单链表不支持随机存取,查找特定元素需从头遍历。
头节点与头指针
无论是否有头节点,头指针始终指向链表的第一个结点。头结点是带头链表中的第一个结点,通常不存储有效信息。引入头结点的优势在于统一了空表和非空表的处理逻辑,且第一个数据结点的位置操作与其他位置一致。
二、单链表的基本操作
1. 初始化
带头结点: 申请一块内存作为头结点,将 next 指针置为 NULL。
bool InitList(LinkList& L) {
L = (LNode*)malloc(sizeof(LNode));
if (!L) return false;
L->next = NULL;
return true;
}
不带头结点: 直接将头指针设为 NULL。
bool InitList(LinkList& L) {
L = NULL;
return true;
}
2. 判空
检查头指针的 next 是否为 NULL。若为空则返回 true。
bool Empty(LinkList L) {
return L->next == ;
}


