王道计算机408数据结构 笔记5

2.3.3 双链表

双链表的初始化(带头结点):

 双链表的插入:

 若p结点是最后一个结点,p->next->prior = s;会出现问题,因此做出如下改进:

双链表的删除:

双链表的遍历:

 

 双链表不可以随机存储,按值查找和按位查找都需要遍历链表,时间复杂度O(n)

知识回顾与重要考点:

2.3.4 循环链表

什么是循环链表?

初始化代码:

 

 循环单链表可以从任何一个结点出发找到任何一个结点 

循环双链表:

代码:

 

 双链表的插入:

此时不会出现上一节的问题,因为尾结点的后继结点是头结点

 

知识回顾与重要考点:

 

2.3.5静态链表

什么是静态链表?

静态链表:分配一整片连续的内存空间,各个结点集中安置。 

 用代码定义一个静态链表

方法一:

方法二(课本):

 两种方法的验证:

(初始化时,应该把空结点的next设定为-2,防止脏数据) 

简述基本操作的实现:

考的少,理解就行 

 

2.3.6 顺序表和链表的比较

Round 1 逻辑结构

都属于线性表,都是线性结构。

Round 2 存储结构

顺序表的优点:支持随机存储,存储密度高

顺序表的缺点:大片连续空间分配不方便,改变容量不方便

链表的优点:离散的小空间分配方便,改变容量方便

链表的缺点:不可随机存储,存储密度低

Round 3 基本操作(创销、增删改查)

创建:

销毁:

 malloc申请的空间一定要用free释放

增加和删除: 

(若数据元素极大,顺序表的时间代价极高)

查找:

 

 什么时候用顺序表或者链表?

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值