线性表的顺序存储也称为顺序表。 它利用一组地址连续的存储单元(如C语言中的数组)将数据元素按顺序存储在线性表中,使得逻辑上相邻的两个元素在物理上也相邻。
序列表中的任何元素都可以在单位时间内找到其存储位置。
注意:线性表中元素的位序是从1开始的,而数组中元素的下标是从0开始的,这个需要在具体问题中区分清楚。
1.如何建立顺序表的结构
首先我们需要在内存中“找到一块地”,而且是连续的,那么我们就可以先确定存储空间的起始位置; 那么我们还需要知道土地有多大,所以我们还需要确定土地的大小; 最后我们需要匹配表中的每个元素,因此我们需要知道有多少个元素,也就是表的长度。
2、建立序列表三个属性存储空间的起始位置(数组名数据) 序列表最大存储容量() 序列表当前长度()
#50 //定义线性表的最大长度
int //假设表中元素类型为int
{
数据 []; //序列表(数组)的元素
整数; //当前序列表的长度
}; //序列表的类型定义
这里线性表的数组数据是静态分配的(开放数组),大小固定,满了就会溢出。
事实上,数组也可以动态分配空间。 存储数组的空间是在程序执行过程中通过动态存储分配语句分配的。
整数;
{
*数据; //指示动态分配数组的指针
整数,; //最大容量和当前数组数量
};
C语言动态分配语句
#100
L;
L.data=(*)(()*);
注意:动态分配不是链式存储,仍然是顺序存储结构,但是分配的空间大小可以随时操作。
3.总结 序列表的主要特点是随机访问(基于C语言中的数组),即通过首地址和元素序号可以在O(1)时间内找到指定元素。 顺序表的存储密度较高,每个节点只存储数据元素。 不需要在表中的元素上花费空间来建立它们之间的逻辑关系(因为物理位置相邻的特性)。 序列表中逻辑上相邻的元素在物理上也相邻,因此插入和删除操作需要移动大量元素。