1
算法与数据结构  C语言版
1.4.2.1 2.2.1 线性表的顺序存储结构——顺序表
2.2.1 线性表的顺序存储结构——顺序表

计算机内存储器是由有限个存储单元组成的,每个存储单元都有对应的整数地址,各存储单元的地址是连续编号的。若用一组地址连续的存储单元依次存储线性表里各元素就构成线性表的顺序存储结构,即顺序表,如图2-1所示。它的特点是逻辑上相邻的数据元素,其物理位置也是相邻的。线性表的顺序存储结构又常称为向量(vector)。

在图2-1的存储结构中,假设每个数据元素占用1个存储单元,b为第一个元素的存储首址,则线性表中任意相邻的两个数据元素ai与ai+1的存储首址LOC(ai)与LOC(ai+l)将满足下面的关系:

一般来说,线性表的第i个数据元素ai的存储位置为:

此式表明,线性表中每个元素的存储首址都与第一个元素的存储首址b相差一个与序号成正比的常数。由于表中每个元素的存储首址可由上面简单的公式计算求得,且计算所需要的时间也是相同的,所以访问表中任意元素的时间都相等,并且可以随机存取。

在电话号码簿中,每个元素由3个数据项组成,即姓名、住址和电话号码,其顺序存储的机内表示如图2-2所示。

图2-1 线性表的顺序存储结构

图2-2 电话号码簿的顺序存储结构

由于记录中各数据项不能通过下标值进行访问,因而若假设姓名需要占用x个存储单元,地址需要占用y个存储单元,整个元素需要占用1个存储单元,则第i个元素的地址和电话号码的存储首址可分别由下面的两个公式求得:

LOCN(i)=b+(i-1)×1+x

LOCP(i)=b+(i-1)×1+(x+y)