线性表的顺序表示

2020/12/16

# Heading

# 定义

线性表的顺序存储又称顺序表,它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。 假设线性表L的起始位置是LOC(A),sizeof(EleType)是元素大小。

数组下标 顺序表 内存地址
0 a1 LOC(A)
1 a2 LOC(A)+sizeof(EleType)
2 a3 LOC(A)+2*sizeof(EleType)
... ... ...
i-1 ai LOC(A)+(i-1)*sizeof(EleType)
... ... ...
n-1 an LOC(A)+(n-1)*sizeof(EleType)

一维数组可以静态分配,也可以动态分配。在静态分配时,由于数组的大小和空间已经固定,一旦空间占满,再加入新的数据将会溢出,进而导致程序奔溃。而在动态分配时,数组空间是在程序执行期间通过动态分配语句分配的,一旦空间快要占满就另外开辟一片更大的空间替换,从而达到扩充的目的。
优点:

  1. 随机访问,即通过首地址和元素序号可以再O(1)的时间复杂度内找到指定元素。
  2. 存储密度高,每个节点只存储元素。 缺陷:
    由于逻辑上相邻的元素物理上也相邻,所以插入和删除需要移动大量元素。

# 操作

数组的基本操作,略过。