前言:为什么会出现线性表的链式存储结构? 序贯记忆结构是用一个连续的存储单元记忆线性表,在插入删除线性表时非常不便。 为了解决这种顺序存储结构的缺点,人们认为不能采用不连续的存储方式,哪里有空闲就去哪里,在第一个要素中可以依次找到下一个各要素,连锁存储结构应运而生
1、定义
链式存储结构使用任意的一组存储单元存储线性表(可以是连续的也可以是不连续的)的n个节点链接成链表
2、分类
链表分为单链表、双链表、静态链表和循环链表
3、容易混淆
1 )节点包括数据域和指针域,其中next指针域指向的是其后的整个结点不是节点的一部分
)2)头指针)指向链表中的第一个节点; 如果链表中有一个头节点,则头指针指向头节点,否则头指针指向第一个节点。 头上的指针标识链表。 头上的指针表示链表。 不管链表是否为空,头指针都不是空的。
头节点:第一个数据元素之前的节点; 数据域通常是无意义的
)3)清空包含头部的节点和不包含头部的链表的判断方法(设头部指针为l ) ) ) )。
包括头节点: L-next=NULL
不包含标头的节点: L=NULL
4、定义单链接列表节点
typedef struct
{
elemtype数据;
结构lnode * next;
}LNode,*LinkList;
说明: (1)链表由一个个节点构成,制作链表只需在表中添加节点即可
) LinkList表示结构类型的指针,被定义的指针的结构中也包含数据域和next指针域
)3) L-next是表示标题节点的指针(-表示结构中包含的元素) )。