一、线性表是具有相同特性的数据元素一个有限序列。
(1)同一线性表中的元素必定有相同特性,数据元素间的关系是线性关系。
(2)线性表的顺序表示又称为顺序存储结构或顺序映像。
(3)顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
(4)线性表的第1个数据元素的存储位置,称作线性表的起始地址或基地址。
(5)线性表的存储结构:
- 依次存储,地址连续------中间没有空出存储单元。
- 地址不连续----中间存在空的存储单元
①线性表顺序存储结构占用一片连续的存储空间。知道某个元素的存储位置就可以计算其他元素的存储位置。
- 地址连续
- 依次存放
- 随机存取
- 类型相同
对含有n个记录的表,查找成功时:顺序超找的平均查找长度(n+1)/2
二、线性表的链式存储结构
1.定义:节点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻
2.线性表的链式标识又称为非顺序映像或链式映像。
①头指针、结点分为数据域、指针域
- 单链表
- 双链表
- 循环链表
- 头指针:是指向链表中第一个结点的指针
- 头结点:是在链表的首元结点之前附设的一个结点
- 首元结点:是指链表中存储第一个数据元素的结点
②链式的特点:访问时只能通过头指针进入链表,并且通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不等。这种存取元素的方法叫顺序存储法。
3.单链表:结点只有一个指针的链表,称为单链表或线性链表
4.双链表:节点有两个指针域的链表,称为双链表
5.循环链表:首尾相接的链表(单循环链表、双循环链表)
优点:从表中任一结点出发均可找到表中其他结点
在链表中设置头结点的好处?
①便于首元结点的处理。首元结点的地址保存在头结点的指针域中,所以在链表的第一个位置上的操作和其他位置一致,无需进行特殊处理;
②便于空表和非空表的统一处理。无论链表是否为空,头指针都是指向结点的非空指针,因此空表和非空表的处理也就统一了。
头结点的数据域内装的是什么?
头结点的数据域可以为空,也可以存放线性表长度等附加信息,但此结点不能计入链表长度值。