//本代码用int来代指ElemType
#include<stdio.h>
#define MaxSize 50
typedef struct{
int data[MaxSize];
int length;
}Sqlist;
//顺序表初始化
void InitList(Sqlist &L){
L.length=0;
}
//插入操作
bool ListInsert(Sqlist &L,int i,int e){
if(i<1||i>L.length+1)//判断i的范围是否有效
return false;
if(L.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;
}
//删除操作
bool ListDelete(Sqlist &L,int i,int &e){
if(i<1||i>L.length+1)
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;
}
//按值查找
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;
}
//遍历输出
void PrintList(Sqlist L){
for(int i=0;i<L.length;i++)
printf("%d ",L.data[i]);
}
int main(){
Sqlist L;
int e;//存数据的
InitList(L);
ListInsert(L,1,2);
ListInsert(L,2,3);
ListInsert(L,3,4);
PrintList(L);
printf("插入完成\n");
ListDelete(L,2,e);
PrintList(L);
printf("删除完成\n");
e=LocateElem(L,4);
printf("4的位序为%d",e);
}
运行结果:
2 3 4 插入完成
2 4 删除完成
4的位序为2