线性表的顺序存储类型描述:
#define MaxSize 50 //定义线性表的长度
typedef struct{
ElemType data[MaxSize]; //顺序表的元素
int length; //顺序表的当前长度
}SqList; //静态分配数组顺序表的类型定义
#define InitSize 100 //表长度的初始定义
typedef struct{
ElemType *data; //指示动态分配数组的指针
int MaxSize,length; //数组的最大容量和当前个数
}SqList; //动态分配数组顺序表的类型定义
顺序表插入操作:
bool ListInsert(SqList &L,int i,ElemType e){
if(i<1 || i>L.length+1) //判断i的范围是否有效,i代表第几个位置
return false;
if(L.length>MaxSize) //当前存储容量已满,不能插入
return false;
for(int j=L.length;j>=i;j--) //将第i个元素及之后的元素后移
L.data[j]=L.data[j-1];
L.data[i-1]=e; //在位置i放入e
L.length++; //表长加1
return true;
}
顺序表删除操作:
bool ListDelete(SqList &L,int i,ElemType &e){
if(i<1 || i>L.length+1) //判断i的合法性
return false;
L.data[i-1]=e; //将被删除的元素赋值给e
for(int j=i;j<L.length;j++) //将第i个位置后的元素前移
L.data[j-1]=L.data[j];
L.length--; //表长-1
return true;
}
顺序表按值查找(顺序查找):
int LocateElem(SqList L,ElemType e){
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1; //下标为i的元素值等于e,返回其为序i+1
return 0;
}