存储类别 | 顺序存储结构 | 单链表 |
---|---|---|
存储分配方式 | 用一段连续的存储单元依次存储线性表的数据元素 | 采用链式存储结构,用一组任意的存储单元存放线性表的元素 |
时间性能 | 查找O(1)、插入和删除O(n) | 查找O(n)、插入和删除O(1) |
空间性能 | 需要预分配存储空间,分大了浪费,小了容易发生上溢 | 不需要分配存储空间,只要有就可以分配,元素个数不受限制 |
由图可以得知,顺序表 和 链表都是线性表。
线性表:
线性表是最简单也是最常用的一种数据结构。英文字母表(A、B、…、Z)是一个线性表,表中每个英文字母是一个数据元素;成绩单是一个线性表,表中每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。
定义:
线性表是具有相同特性的数据元素的一个有限序列。线性表一般表示为:
L = (a1, a2, …, ai,ai+1 ,…, an)
线性表的顺序存储结构
顺序表
把线性表中的所有元素按照其逻辑顺序依次存储在计算机存储器中指定存储位置开始的一块连续的存储空间中。
顺序表必须占用一整块事先分配大小固定的存储空间,这样不便于存储空间的管理。为此提出了可以实现存储空间动态管理的链式存储方式–链表。
链表
在链式存储中,每个存储结点不仅包含元素本身的信息(数据域),还包含元素之间逻辑关系的信息,即一个结点中包含有直接后继结点的地址信息,这称为指针域。这样可以通过一个结点的指针域方便的找到后继结点的位置。
- 由于顺序表中每个元素至多只有一个直接前驱元素和一个直接后继元素。当采用链式存储时,一种最简单也最常用的方法
- 在每个结点中除包含数据域外,只设置一个指针域用以指向其直接后继结点,这种构成的链接表称为线性单向链接表,简称单链表。
另一种方法是,在每个结点中除包含数值域外,设置两个指针域,分别用以指向直接前驱结点和直接后继结点,这样构成的链接表称为线性双向链接表,简称双链表。
单链表当访问一个结点后,只能接着访问它的直接后继结点,而无法访问他的直接前驱结点。双链表则既可以依次向后访问每个结点,也可以依次向前访问每个结点。