线性表2:顺序存储

顺序存储定义
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

顺序存储方式
由于线性表的每个数据元素的类型都相同,我们可以用一维数组来实现顺序结构存储,即把第一个数据元素存到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。

线性表的顺序存储结构代码如下:

#define MAXSIZE 20           // 存储空间初始分配量
typedef int ElemType;        // ElemType 类型根据实际情况而定,这里假定为int
typedef struct {
    ElemType data[MAXSIZE];  // 数组存储数据元素,最大值为MAXSIZE
    int length;              // 线性表当前长度
}SqList;

这里发现,描述顺序存储结构需要三个属性:

存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置
线性表的最大存储容量:数组长度MAXSIZE
线性表的当前长度:length
数组长度与线性表长度的区别
数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作而改变
在任意时刻,线性表的长度都应该小于等于数组的长度。

地址计算方法
假设占用的是c个存储单元,那么线性表中第i+1个数据元素的存储位置和第i个数据元素的存储位置满足下列关系(LOC表示获得存储位置的函数)

LOC(ai+1) = LOC(ai) + c

所以对于第i个数据元素 ai 的存储位置可以由 a1 推算得出:

LOC(ai) = LOC(a1) + (i - 1) * c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值