顺序表定义:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
简单来说,顺序表存储有两个特点:
1.逻辑顺序和物理顺序一致。
2.数据元素之间的关系通过物理相邻来实现。
顺序表示意图如下:
代码实现(c语言):
1.定义线性表的顺序存储结构
#define MAXSIZE 100 //设置顺序表的最大容量为100
typedef int cont; //这里将cont定义为int类型,为什么要多此一步,因为如果将int类型改为floct类型,只需要将这里的int换为float即可,省去很多修改步骤
typedef struct{
cont data[MAXSIZE];
int length;
}OList; //定义一个OList结构体,内含有一个最大容量为MAXSIZE的数组,和顺序表长度,此时OList就是定义一个顺序表
2.顺序表的创建
Olist *SetList()
{
OList *L;
L = (OList*)malloc(sizeof(OList)); //为L指针分配内存空间
L->length=0; //空表长度为0
return L;
}
3.顺序表的插入
OList InsertList(OList *L,int i,cont x) //L为指向顺序表的指针,i是数据插入的位置,x是要插入的数据//
{
if(i<1||i>(L->length)+1)
printf("插入位置有误");
else if(L->length==MAXSIZE)
printf("表空间已满,不能再进行插入");
else
{
for(int j=i-1;j<L->length;j++)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
}
L->length++;
return *L;
}
4.顺序表的删除
OList DeList(OList *L,int i) //i为数据的位置