#define MaxSize 50
typedef struct{ //声明一个顺序表
int data[MaxSize];
int length;
}SqList;
//后插
//在第i个位置插入新元素e,1<=i<=L.length
//这个i是位序,不是数组的下标 ,也就是要在下标i-1处插入
bool ListInsert(SqList &L.int i,int e){
if(i<1||i>L.length+1){ //判断 i 的范围是否有效
return false;
}
if(L.length>=MaxSize){ //当前存储空间已满,不能插入
return false;
}
//空间够,位序i以及i后面的:下标>=i-1的元素都赋给后一位
for(int j=L.length;j>=i;j--){//尤其是最后有元素的那位,你先挪了前面的才能依次往后挪
L.data[j]=L.data[j-1];
}
//循环出来,第i的位置就腾出来了 ,也就是i-1的下标
L.data[i-1]=e;
L.length++;
return true;
}
//删除
//删除第i个位置的元素,成功则返回true,并将被删除的元素用引用变量e返回,否则返回false
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length){//判断i的范围
return false;
}
e=L.data[i-1];//先保存待删除的
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];//让后面的移到前面去
}
L.length--;
return true;
}
//查找
//从头查找第一个元素值=e的元素并返回位序
int LocateElem(SqList L,int e){
int i;
for(i=0;i<L.length;i++){
if(L.data[i]==e){
return i+1;
}
}
return 0;
}
顺序表的基本操作(插删查)
最新推荐文章于 2022-09-15 16:56:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)