顺序表的插入删除查找实战
#define Max 50
//初始化顺序表
typedef int ElemType;
typedef struct {
ElemType data[Max];
int len;
}sqlist;
bool ListInsert(sqlist &L,int i,ElemType e){//i是插入的位置,e是插入的元素
if(i<1||i>L.len+1){ //判断插入是否合法
return false;
}
if(L.len==Max){ //判断顺序表长度是否超出空间
return false;
}
for(int j=L.len;j>=i;j--){ //将最后一个元素到第I个元素,依次后移1位
L.data[j]=L.data[j-1];
}
L.data[i-1]=e; //空出的位置I,放元素e
L.len++; //顺序表+1
return true;
}
bool DeleList(sqlist &L,int i,Elemtype &e){
if(i<1||i>L.len){
return false;
}
e=L.data[i-1];
for(int j=i;j<L.len;j++){
L.data[j-1]=L.data[j];
}
L.len--;
return true;
}
int SeleList(sqlist L,Elemtype e){
int i;
for(i=0;i<L.len;i++)
if(e==L.data[i]){
return i+1;
}
return 0;
}
//打印顺序表
void NewList(sqlist L){
for(int i=0;i<L.len;i++){
printf("%3d",L.data[i]);
}
printf("\n");
}
int main(){
sqlist L;
bool ret;
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.len=3;
ret = ListInsert(L,2,60);
if(ret){
printf("插入成功\n");
NewList(L);
} else{
printf("插入失败");
}
printf("------------------------------------\n");
ret = DeleList(L,1,del);
if(ret){
printf("delete success\n");
PrintList(L);
} else{
printf("delete fail\n");
}
printf("------------------------------------\n");
int pos;
pos = SeleList(L,60);
if(pos){
printf("select success\n");
printf("%d",pos);
}else{
printf("select fail\n");
}
return 0;
}