他心中三分伤感、三分留恋、又有三分宽慰,望着她的背影消失在黑暗之中。他知道殷离这一生,永远会记着蝴蝶谷中那个一身狠劲的少年,她是要去找寻他。她自然找不到,但也可以说,她早已寻到了,因为那个少年早就藏在她的心底。张无忌心头忽然涌起三句话来:“生死修短,岂能强求?予恶乎知悦生之非惑邪?予恶乎知恶死之非弱丧而不知归者邪?予恶乎知夫死者不悔其始之蕲生乎?”
前言
线性结构的基本特点是除第一个元素无直接前驱,最后一个元素无直接后继之外,其他每个数据元素都有一个前驱和后继,线性表是最基本最常用的一种线性结构,同时也是其他数据结构的基础,尤其是单链表,是贯穿整个数据结构课程的基本技术,因此,接下来和博主一起走进线性表的逻辑结构,存储结构,以及它的相关运算,将为大家梳理一下它的思维导图,欢迎大家查漏补缺!
定义和特点
A.定义:
用数据元素的有限序列表示
(a1, a2, … ai-1,ai, ai+1 ,…, an)
B.特点:
对于非空的线性表或线性结构
存在唯一的一个被称作"第一个"的数据元素
存在唯一的一个被称作"最后一个"的数据元素
除第一个之外,结构中每一个数据元素均只有一个前驱
除最后一个之外,结构中的每一个数据元素均只有一个后继
类型定义
1).数据对象
2).数据关系
3).线性表的重要基本操作
1. 初始化
2. 取值
3. 查找
4. 插入
5. 删除
线性表的顺序表示和实现
A.概念:
顺序存储定义
把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
顺序存储方法
用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]来实现
B.特点:
(1)利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与存储结构一致
(2)在访问线性表时,可以快速地计算出任何一个数据元素的存储地址。因此可以粗略地认为,访问每个元素所花时间相等
线性表优缺点:
线性表的链式表示和实现
A.概念:
线性表的链式表示又称为非顺序映像或链式映像
B.特点:
(1)结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻
(2)访问时只能通过头指针进入链表,并通过每个结点的指针域向后扫描其余结点,
所以寻找第一个结点和最后一个结点所花费的时间不等
相关术语:
1.结点
数据元素的存储映像。由数据域和指针域两部分组成
2.链表
n 个结点由指针链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构
3.单链表
结点只有一个指针域的链表,称为单链表或线性链表
4.双链表
有两个指针域的链表,称为双链表
5.循环链表
首尾相接的链表称为循环链表
6.头指针
是指向链表中第一个结点的指针
7.首元结点
是指链表中存储第一个数据元素a1的结点
7.头结点
是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息
链表中设置头结点作用:
⒈便于首元结点的处理
⒉便于空表和非空表的统一处理
线性表的链式的优缺点:
类型:
单链表
循环链表
双向链表
顺序表和链表的比较
A.空间性能的比较
1.存储空间
顺序表:
预先分配,会导致空间闲置或溢出现象
链表:
动态分配,不会出现存储空间闲置或溢出现象
2.存储密度
顺序表:
不用为表示结点间的逻辑关系而增加额外的存储开销,存储密度等于1
链表:
需要借助指针来体现元素间的逻辑关系,存储密度小于1
B.时间性能的比较
1.存取元素
顺序表:
随机存取,按位置访问元素的时间复杂度为O(1)
链表:
顺序存取,按位置访问元素时间复杂度为O(n)
2.插入、删除
顺序表:
平均移动约表中一半元素,时间复杂度为O(n)
链表:
不需移动元素,确定插入、删除位置后,时间复杂度为O(1)
线性表的应用
A.线性表的合并
B.有序表的合并:
要求:
1.将这两个有序链表合并成一个有序的单链表。
2.要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
3.表中允许有重复的数据。
总结
葵花宝典秘籍,掌握顺序表和链式表的查找、插入和删除算法、链表的创建算法,并能够设计出线性表应用的常用算法,比如线性表的合并,能够从时间复杂度与空间复杂度的角度比较两种存储结构的不同特点以及其适用场合,明确优缺点。