顺序存储结构定义与特点
-
定义
把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
基地址(首地址,起始位置):线性表的第1个数据元素 a 1 a_1 a1的存储位置。 -
特点
地址连续
例如,
线性表顺序存储结构占用一片连续的存储空间,知道某个元素的存储位置就可以计算其他元素的存储位置。
假设线性表的每个元素需占
l
l
l个存储单元,则有如下两个公式:
L
O
C
(
a
i
+
1
)
=
L
O
C
(
a
i
)
+
l
LOC(a_{i+1})=LOC(a_i)+l
LOC(ai+1)=LOC(ai)+l
L
O
C
(
a
i
)
=
L
O
C
(
a
1
)
+
(
i
−
1
)
∗
l
LOC(a_i)=LOC(a_1)+(i-1)*l
LOC(ai)=LOC(a1)+(i−1)∗l
上述计算存储结构的时间复杂度为
O
(
1
)
O(1)
O(1)。
两大特点:
- 以物理位置相邻表示逻辑关系
- 任一元素均可随机存取
顺
序
表
(
元
素
)
{
地
址
连
续
依
次
存
放
随
机
存
取
类
型
相
同
⇒
用
一
维
数
组
表
示
顺
序
表
顺序表(元素)\begin{cases} 地址连续\\ 依次存放 \\ 随机存取\\ 类型相同\\ \end{cases} \Rightarrow 用一维数组表示顺序表
顺序表(元素)⎩⎪⎪⎪⎨⎪⎪⎪⎧地址连续依次存放随机存取类型相同⇒用一维数组表示顺序表
但在C语言中数组的长度不可动态定义,而线性表的表长是可变的(插入、删除等操作)。
所以,用一变量表示顺序表的长度属性。
这里用一个数组和一个长度值定义一个顺序表。
例子,
- 多项式
- 图书表