顺序表操作
//初始化[动态分配]
void initial(SqList& L){
L.data = (int*) malloc( sizeof(int)*Maxsize ); //单元素占字节数 * 元素个数
// L.data是数组名————>int型指针!
L.length=0;
}
//按【下标】查找 第k个(从0开始)
int getElem(SqList L, int k){
//合法性判断 1>空 2> 越界
if(SqList.length==0){
return -1;
}
if(k<0 || k>=L.length){
return -1;
}
//合法
return L.data[k];
}
//按【值】查找 返回下标
int LocateElem(SqList L, int e){
for(int i=0;i<L.length;i++){
if(L.data[i] == e){
return i;
}
}
return -1;
}
//插入 元素 + 插入位置
bool Insert(SqList& L, int e, int k){
//合法性判断 1>满 2>越界
if(L.length==Maxsize){
return false;
}
if(k<0 || k>=L.length){
return false;
}
//【从后往前】移动元素——>腾出下标为k的位置
for(int i=length-1; i>k; i--){
L.data[i+1]=L.data[i];
}
L.data[k]=e; //插入元素
L.length++; //更新长度!!!
return true;
}
//按【下标】删除 元素
bool delete(SqList& L, int k){
//合法性判断 1>空 2>越界
if(L.lenth==0) return false;
if(k<0 || k>=L.length) return false;
//【从前往后】前移覆盖
for(int i=k;i<L.length; i++){
L.data[i]=L.data[i+1];
}
L.length--;
return true;
}
//按【值】删除
bool delete(SqList& L, int e){
//合法性判断 1>空 2>越界
if(L.lenth==0) return false;
if(k<0 || k>=L.length) return false;
bool exist=false;
//先找到下标k!!!
for(int i=0;i<L.length;i++){
if(L.data[i]==e){
k=i;
exist=ture;
break;
}
}
//如果k找到
if(exist){
for(int i=k;i<L.length;i++){
L.data[i]=L.data[i+1];
}
L.length--;
return true;
}
return false;
}