(头指针->头结点->首元结点 )
- 单链表
销毁单链表
tip*
- (此处,LinkList已经是指针,定义p,不需要加*)
这里定义的是单链表中每个结点的存储结构,它包括两部分:存储结点的数据域data,其类型用通用类型标识符ElemType表示(例如,用链表表示案例2.1中的图书信息时,只需将ElemType替换为2.4.1定义的Book数据类型即可);存储后继结点位置的指针域next,其类型为指向结点的指针类型LNode*。
为了提高程序的可读性,在此对同一结构体指针类型起了两个名称,LinkList与LNode*,两者本质上是等价的。通常习惯上用LinkList定义单链表,强调定义的是某个单链表的头指针;用LNode*定义指向单链表中任意结点的指针变量。例如,若定义LinkList L,则L为单链表的头指针,若定义LNode*p,则p为指向单链表中某个结点的指针,用*p代表该结点。当然也可以使用定义LinkList p,这种定义形式完全等价于LNode*p。
- (增删查改)
- <1> 查找
取第i个元素值
具体
按值查找
- <2>插入
不可以,会丢失ai的地址
- <3>删除
- 效率分析
- 头插尾插建立链表
- 尾插法建立链表
(不同的是:为了使新结点能够插入到表尾,需要增加一个尾指针r指向链表的尾结点)
r是尾结点,一直在尾结点
- 循环链表
(有一个尾指针更好操作链表头尾结点)
- 双向链表
双向链表插入操作思路
- 双向链表删除操作
- 链表效率比较
- 顺序表,链表比较
- 线性表的应用