数据结构和算法之线性表

本文详细介绍了线性表的概念及其两种主要的存储结构——顺序表和链表。顺序表包括静态和动态分配,讨论了插入和删除操作的时间复杂度。链表部分涵盖了单链表、带头和不带头结点的操作,以及双链表和循环链表的特性。此外,还提到了静态链表和线性结构的优缺点。
摘要由CSDN通过智能技术生成

1、线性表

在这里插入图片描述
在这里插入图片描述

1、1 线性表的定义

在这里插入图片描述

1、2 线性表的基本操作

在这里插入图片描述

1、3 小结

在这里插入图片描述

2、线性表的存储结构

在这里插入图片描述

2、1顺序表

在这里插入图片描述

2、2 顺序表实现-静态分配

在这里插入图片描述

案列

在这里插入图片描述

2、3 顺序表实现-动态分配

在这里插入图片描述

案例

在这里插入图片描述

2、4 顺序表的特点

在这里插入图片描述

2、5 小结

在这里插入图片描述

3、顺序表的插入和删除

在这里插入图片描述

3、1顺序表的基本操作-插入

先移位再插入
在这里插入图片描述

实现

不健壮的
在这里插入图片描述

注意问题:
1. 如果使用者在调用 ListInsert 函数时 内存满了
2.如果使用者在调用 ListInsert 函数时 插入的是不相邻的数时

优化代码加上条件判断

在这里插入图片描述

3、2顺序表的插入操作的时间复杂度

在这里插入图片描述

问题规模一般是变量大小

3、3顺序表的基本操作-删除

先删除再移位

在这里插入图片描述

实现

在这里插入图片描述

3、4顺序表的删除操作的时间复杂度

在这里插入图片描述

3、5 小结

在这里插入图片描述

4、顺序表的查找

在这里插入图片描述

4、1顺序表的按位查找

在这里插入图片描述

在这里插入图片描述

数据地址=起始地址 + 数据类型的大小

4、2顺序表的按位查找时间复杂度

在这里插入图片描述

4、3顺序表的按值查找

在这里插入图片描述

实现

在这里插入图片描述

在这里插入图片描述

4、4顺序表的按值查找时间复杂度

在这里插入图片描述

4、5小结

在这里插入图片描述

5、 链表存储结构

在这里插入图片描述

5、1 单链表

在这里插入图片描述

在这里插入图片描述

5、2 用代码实现一个单链表

在这里插入图片描述

实现
在这里插入图片描述
在这里插入图片描述

不带头结点

在这里插入图片描述

带头结点

在这里插入图片描述

不带头结点 VS 带头结点

在这里插入图片描述

5、3 小结

在这里插入图片描述

5、4 单链表的插入删除

在这里插入图片描述

按位序插入(带头结点)

在这里插入图片描述

实现
在这里插入图片描述

在这里插入图片描述

时间复杂度

在这里插入图片描述

按位序插入(不带头结点)

在这里插入图片描述

实现

在这里插入图片描述

指定节点的后插操作

在这里插入图片描述
实现

在这里插入图片描述

指定节点的前插操作

  1. 传入头指针
  2. 改变数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

按位序删除(带头结点)

在这里插入图片描述

实现

在这里插入图片描述

指定节点的删除

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、5小结

在这里插入图片描述

5、6单链表的查找

在这里插入图片描述

按位查找

在这里插入图片描述

各种情况
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

按值查找

在这里插入图片描述

求表的长度

在这里插入图片描述

5、7小结

在这里插入图片描述

5、8单链表的建立

在这里插入图片描述

尾插法建立单链表

  1. 定义一个length变量记录表长
  2. 定义一个指针指向末尾元素

在这里插入图片描述
在这里插入图片描述

案例

在这里插入图片描述

头插法建立单链表

在这里插入图片描述

案例

在这里插入图片描述

5、8小结

在这里插入图片描述

5、9 双链表

在这里插入图片描述

单链表VS双链表

在这里插入图片描述

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

在这里插入图片描述

双链表的插入

不健壮

在这里插入图片描述

优化
在这里插入图片描述

双链表的删除

在这里插入图片描述

双链表的遍历

在这里插入图片描述

5、10 小结

在这里插入图片描述

5、11循环链表

在这里插入图片描述

循序单链表

在这里插入图片描述

实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

循环双链表

在这里插入图片描述

实现

在这里插入图片描述

双链表的插入

在这里插入图片描述

双链表的删除

在这里插入图片描述

5、12小结

在这里插入图片描述

5、13静态链表

在这里插入图片描述

在这里插入图片描述

用代码实现一个静态链表

在这里插入图片描述
在这里插入图片描述

静态链表的基本操作

在这里插入图片描述

在这里插入图片描述

5、14

在这里插入图片描述

总结

在这里插入图片描述

逻辑结构:

顺序表和链表都是线性表,都是线性结构

存储结构

顺序表(顺序存储)
优点:支持随机存取、存储密度高
缺点:大片连续空间分配不方便,改变容量不方便

链表(链式存储)
优点:离散的小空间分配方便,改变容量方便
缺点:不可随机存取,存储密度低

基本操作(运算)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

用顺序表or链表
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值