# 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) |
一维数组可以静态分配,也可以动态分配。在静态分配时,由于数组的大小和空间已经固定,一旦空间占满,再加入新的数据将会溢出,进而导致程序奔溃。而在动态分配时,数组空间是在程序执行期间通过动态分配语句分配的,一旦空间快要占满就另外开辟一片更大的空间替换,从而达到扩充的目的。
优点:
- 随机访问,即通过首地址和元素序号可以再O(1)的时间复杂度内找到指定元素。
- 存储密度高,每个节点只存储元素。
缺陷:
由于逻辑上相邻的元素物理上也相邻,所以插入和删除需要移动大量元素。
# 操作
数组的基本操作,略过。