单链表
- 通过任意一组存储单元来存储来存储线性表中的数据元素,但是为了在存储数据元素的同时并且建立元素的线性关系,链表的结点要包含数据域与指针域,指针指向下一个结点的存储地址。
typedef struct LNode { //定义单链表的结点类型
//typedef 关键字数据类型的重命名
ElemType data; //数据域
struct LNode *next; //指针域
} LNode, *LinkList;//LinkList 为指向结点类型的指针
单链表的初始化
//不带头结点
bool InitList(LinkList &L){ //传入结点类型的地址
L = NULL;//空表,防止脏数据,注意指针变量一定要注意初始化
return true;
}
带头节点,初始化
bool InitList (LinkList &L){
LinkList L; //声明一个指向单链表的指针
L = new LNode;
if(L == NULL)
return false;//内存空间分配失败
L->next = NULL;
rerurn true;
}
判断单链表是否为空
bool Empty (LinkList L){
return (L == NULL);
}
//带头节点的判断
bool Empty (LinkList L){
return (L->next == NULL);
}
头节点的好处
- 对于第一个数据结点与之后的数据结点可以有相同的处理逻辑
- 对空表和非空表的处理有相同的处理逻辑