1.单链表
1.1 结点描述
Lnode *p<=>linklist p
1.2 结点实现
1.3 基本操作
1.3.1 赋值
注意几种情况
画图来理解结构
第四种操作可能有断链的可能;
注意几种情况
画图来理解结构
1.3.2 查找
头结点为第0个结点
1.3.2.1 按序号查找(o(n)
1.3.2.2 按值查找
1.3.3 删除(双指针法)
1.3.3.1 按序号删除
1.3.3.2 按值删除
1.删除值为key的所有结点
2.删除所有值重复的结点
1.3.4 插入
先右后左
1.3.5 建表
钩链顺序:先右后左
头插法
始终插在头结点
把头结点右边保留
逆序
尾插法
正序
rear->next=p,rear=p;rear->next=NULL
合并
删除相等结点
2.关于指针
p->:结点本身
p表示指针地址
头结点
统一空表与非空表操作
第一个结点均为p->next
p->data表示值,p->link表示地址
结点实现
基本操作
初始化
合并操作
查找定位删除操作
O(n)
插入
时间复杂度为O(n)
将结点e放入ai的位置
删除
后面的元素依次向前移
时间复杂度为O(n)
3.链式存储
存储元素的同时
还要存储物理地址
存储密度变为50%
双向链表
删除
基本操作
插入
保右
先右后左
对称性
p->prior->next=p=p->next->prior
静态链表
借用数组
指针是指结点的相对地址(下标)
顺序表
插入,删除复杂度高
存储密度为100%
数组是顺序表的一种表现形式
前者是随机存放(离散化),后者必须依次排列(可以进行离散化)
为空
head->next=head
表尾
p->next=head
判别
操作
除合并外均相等
循环链表
定义
约瑟夫问题
两种算法
一:
类别
带尾指针
无头结点
单循环链表
顺序表与链表的优缺点
顺序存取
单链表
查找为O(n)
随机存取
顺序表
查找任意一个元素为O(1)
存储结构
数据元素有序且有限
注意点
一元多项式表示和相加
指数不同:链表合并
系数相同