18考研-数据结构复习笔记-线性表03

(二)其他链式存储结构
1.循环链表:结束条件:后继是否为头结点

单循环链表;
a.可从表中任意位置开始遍历,(单链表只能从表头开始);
b.使用尾指针提高效率;
c.合并或分裂时,可以在直接链表指针处合并,时间复杂度可达O(1);
双向链表;
Typedef struct DulNode
{
Elemtypr data;
Struct DulNode *prior;//  前驱指针
Struct DulNode *next;//   后继指针
}DulNode, *DulinkList;

这里写图片描述

特点:
a.查找,删除需要区分方向;
b.双向循环链表需要同时考虑两个环两个方向;
c.某个节点直接前驱的后继,直接后继的前驱是它本身;
d.从某个结点出发到其直接前驱或直接后继结点的时间复杂度均为O(1);
e.存储密度低;(数据占位小于单链表);
插入删除操作(自主命题重点):

这里写图片描述
这里写图片描述

考点:
插入的四步操作(左-右,上-下)顺序可变但不可任意变;
变化原则:两个已知的两个节点,第三个必需能找到,不能出现空指针,野指针;

2.静态链表(某些学校自主命题可能会考,少)

借助数组来描述线性表的链式存储结构。结点也有数据域和指针域,与前面的链表不同的是,这里的指针是结点的相对地址(数组的下标),称之为静态链表;

这里写图片描述
特点:
a.所有数据元素均存储在一个连续的空间段,但相邻的两个元素不一定存在相邻的空间;
b.修改指针域即可完成插入和删除操作,不需要移动数据元素,但是也不能随机访问静态链表中的元素;
c.一次性分配所有的存储空间,插入删除无需申请或释放空间,但是表长会被限制;
(三)顺序表和链表的比较
1.顺序表和链表的比较

顺序表优点:
a.方法简单,容易实现;
b.不用为表示节点之间的逻辑关系增加逻辑开销;
c.具有按元素序号随机访问的特点;
顺序表缺点:
a.插入或删除,平均移动开销大;
b.需要预先分配足够大的存储空间,导致空间闲置或溢出;
链表缺点:
a.必须要有指针;
b.需要指针,额外开销多,逻辑开销大;
c.不能随机访问;
链表优点:
a.插入删除移动开销小;
b.空间大小伸缩灵活,可有效利用;

2.实际中如何选取:

基于存储的考虑:链表
基于效率的考虑:顺序表
基于环境的考虑:综合实现语言,主要操作,存储特性;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值