[数据结构与算法] 3,线性表
2016-08-30 19:40
316 查看
1 线性表的定义
零个或多个数据元素的有限序列。序列指数据元素之间是有顺序的,若有多个元素,那么第一个元素无前驱,最后一个元素无后继。其它每个元素都有前驱后继。
2 线性表的抽象数据类型
3 线性表的顺序存储结构
定义:用一段地址连续的存储单元依次存储线性表中的数据元素。(C语言中的一维数组)
顺序存储结构线性表的结构代码
三个重要的属性:
1) 存储空间的存储位置:数组data的存储位置。
2)线性表的最大存储容量:MAXSIZE
3)线性表的当前长度:length
4 顺序存储结构下线性表的操作
1)取出操作 时间复杂度:O(1)
2)插入操作 时间复杂度:最坏O(n),平均时间复杂度也是一样
3) 删除操作 时间复杂度O(n),平均也是
5 线性顺序存储结构的优缺点
6 线性表的链式存储结构
头节点:为了操作方便,在第一个节点前增加一个头节点,数据域可以不存储任何信息,也可以放一些公共信息,如下图:
头节点跟头指针的区别:
C语言结构指针描述单链表的:
7 单链表的操作
1)读取操作: 时间复杂度:O(n)
2)插入操作:代码顺序不可相反,可以想想为什么
3)删除操作:
8,单链表结构跟顺序存储结构优缺点
如果线性表需要频繁查找,很少进行插入删除操作,那么适合用顺序存储结构,如果需要频繁插入删除操作,那么适合用链式存储结构,单链表。
比如在游戏开发中,用户注册的信息,除了用户注册外,其余时候我们都是读取,所以应该考虑顺序存储结构。
比如玩家的装备总是在变化,可能增加或者删除,那么适合用单链表。实际情况往往复杂很多。
9,循环链表
将单链表的终端节点的NULL指针改为指向头节点或者开始节点,这就使得整个单链表形成一个环,这种头尾相连的链表称为循环链表(circular linked list)
那么,循环链表判断循环结
da2b
束的标志就是p->next等于头节点或者开始节点,则循环结束。
10,双向链表(double linked list)
双向链表就是多设置了一个指向前驱节点的指针。
、
双向链表的插入操作:
删除操作:
11,总结
零个或多个数据元素的有限序列。序列指数据元素之间是有顺序的,若有多个元素,那么第一个元素无前驱,最后一个元素无后继。其它每个元素都有前驱后继。
2 线性表的抽象数据类型
3 线性表的顺序存储结构
定义:用一段地址连续的存储单元依次存储线性表中的数据元素。(C语言中的一维数组)
顺序存储结构线性表的结构代码
三个重要的属性:
1) 存储空间的存储位置:数组data的存储位置。
2)线性表的最大存储容量:MAXSIZE
3)线性表的当前长度:length
4 顺序存储结构下线性表的操作
1)取出操作 时间复杂度:O(1)
2)插入操作 时间复杂度:最坏O(n),平均时间复杂度也是一样
3) 删除操作 时间复杂度O(n),平均也是
5 线性顺序存储结构的优缺点
6 线性表的链式存储结构
头节点:为了操作方便,在第一个节点前增加一个头节点,数据域可以不存储任何信息,也可以放一些公共信息,如下图:
头节点跟头指针的区别:
C语言结构指针描述单链表的:
7 单链表的操作
1)读取操作: 时间复杂度:O(n)
2)插入操作:代码顺序不可相反,可以想想为什么
3)删除操作:
8,单链表结构跟顺序存储结构优缺点
如果线性表需要频繁查找,很少进行插入删除操作,那么适合用顺序存储结构,如果需要频繁插入删除操作,那么适合用链式存储结构,单链表。
比如在游戏开发中,用户注册的信息,除了用户注册外,其余时候我们都是读取,所以应该考虑顺序存储结构。
比如玩家的装备总是在变化,可能增加或者删除,那么适合用单链表。实际情况往往复杂很多。
9,循环链表
将单链表的终端节点的NULL指针改为指向头节点或者开始节点,这就使得整个单链表形成一个环,这种头尾相连的链表称为循环链表(circular linked list)
那么,循环链表判断循环结
da2b
束的标志就是p->next等于头节点或者开始节点,则循环结束。
10,双向链表(double linked list)
双向链表就是多设置了一个指向前驱节点的指针。
、
双向链表的插入操作:
删除操作:
11,总结
相关文章推荐
- 数据结构之算法2.6-在顺序线性表L中查找第1个值与e满足compare()的元素的位序
- 数据结构与算法——线性表(一)
- 再回首,数据结构——线性表、链表上的常见算法
- 数据结构和算法 (二)数据结构基础、线性表、栈和队列、数组和字符串
- 数据结构与算法--线性表
- 数据结构与算法——线性表链式存储(单循环链表)
- 数据结构与算法---线性表
- 【数据结构与算法】线性表备忘
- 数据结构——线性表中的算法
- 数据结构与算法学习笔记02_2(线性表)
- 数据结构与算法——线性表链式存储(单链表)
- (4) 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列
- Uva 算法入门经典(数据结构基础)线性表题目
- 【数据结构与算法003】基本数据结构——线性表(链表)
- 数据结构.算法 近期计划
- 数据结构及算法-何谓数据结构
- Pku acm 1469 COURSES 数据结构题目解题报告(十一)---- 匈牙利算法求二分图的最大匹配
- Pku acm 1125 Stockbroker Grapevine 数据结构题目解题报告(八)---- 弗洛伊德(floyd)算法
- 数据结构中关键路径算法的实现与应用
- Pku acm 2536 Gopher II 数据结构题目解题报告(十四)---- 匈牙利算法求二分图的最大匹配