目录
一、线性表
二、基本概念
线性表的顺序存储又称为顺序表。 它是用一组地址连续的存储单元(比如C语言里面的数组),依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。
建立顺序表的三个属性: (静态分配) 1.存储空间的起始位置(数组名data) 2.顺序表最大存储容量(MaxSize) 3.顺序表当前的长度(length,初始长度L.length=0)
#define MaxSize 50
typedef int Elemtype //元素类型int
typedef struct {
Elemtype data[MaxSize]; //数组
int length; //长度
}SqList;
(动态分配) 其实数组还可以动态分配空间,存储数组的空间是在程序执行过程中通过动态存储分配语句分配
#define initsize 100
SeqList L;
L.data=(Elemtype*)malloc(sizeof(Elemtype)*initsize);
2.1顺序表的插入
思路
代码
bool Listinsert(SqList &L,int i,Elemtype){
if(i<1||i>L.length+1) //范围限度
return false;
if(length>=Maxsize) //数值判断
return false;
for(int j=L.length;j>=i;j--) //移项
L.data[j]=L.data[j-1];
L.data[i-1]=e; //赋值
L.length++; //长度
return true;
}
复杂度
2.2顺序表的删除
思路
代码
bool ListDelete(SqList &L,int i,Elemtype &e){
if(i<1||i>L.length)
return false; //注意和上边的不一样
e=L.data[i-1]; //将被删除的元素赋值给e
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return true;
}