1.相关概念
- 线性表的顺序表示又称为顺序存储结构或顺序映像。
- 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
- 简言之,逻辑上相邻,物理上也相邻。
- 顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]来实现。
2.顺序表的类型定义
//--------顺序表的存储结构----
#define MAX 100 //顺序表可能达到的最大长度
typedef struct Sq
{
Elemtype *elem; //存储空间的基地址
int length; //当前长度
}SqList;
/*Elemtype是一个抽象数据类型 ,可以是int,float,double等或者是自定义的数据类型。
在实际使用是可以使用int,float等来代替;
*/
3.线性表的重要基本操作
3.1顺序表的初始化
- 算法步骤
- ①为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- ②将表的当前长度设为0
- 算法描述
Status InitSqList_Sq(SqList &L)
{
//构造一个空的顺序表L
L.elem=new Elemtype[MAX]; //为顺序表分配一个MAX大小的数组空间
if(!L.elem)
exit(OVERFLOW); //存储分配失败
L.length=0; //空表长度为0
return OK;
}
3.2 顺序表的取值
- 算法步骤
- ①判断指定的位置序号i值是否合理(1≤i≤ L.length),若不合理,则返回 ERROR。
- ②若i值合理,则将第i个数据元素 L.elem[i-l]赋给参数e,通过e返回第i个数据元素的传值。
- 算法描述
Status GetElem(SqList L, int i, Book &e)
{
if (i < 1 || i > L.length)
return ERROR; // 判断i值是否合理,若不合理,返回ERROR
e = L.elem[i - 1]; // elem[i-1]单元存储第i个数据元素
return OK;
}
3.3顺序表的查找
- 算法步骤
- ①从第一个元素起,依次和e相比较,若找到与e相等的元素 L.elem[i],则查找成功,返回该元素的序号i+1
- ②若查遍整个顺序表都没有找到,则查找失败,返回0
- 算法描述
int LocationElem_Sq(SqList L,Elemtype e)
{
for(int i=0;i<L.length;i++)
if(L.elem[i]==e