顺序表的插入删除查找遍历
代码
#define Maxsize 100
typedef int ElemType;
typedef struct{
ElemType data[Maxsize];
int length;
}Sqlist;
void Createlink(Sqlist &L)
{
int a;
printf("请输入你要创建的顺序表的长度:");
scanf("%d",&a);
for(int i=0;i<a;i++){
printf("请输入第%d个元素:",i+1);
scanf("%d",&L.data[i]);
L.length++;
}
}
int getElem(Sqlist &L) //按值查找,返回下标
{
int i;ElemType e;
printf("请输入你要查找的元素:");
scanf("%d",&e);
for(i=0;i<=L.length-1;i++)
{
if(L.data[i]==e)
{
return i+1;
//break;
}
}
printf("无法查找到此元素,请重新操作!");
return -1;
}
bool insertList(Sqlist &L,int p,ElemType e) //在p的位置上插入e的元素
{
int i;
if(p<1||p>L.length+1)
return false;
if(L.length>=Maxsize)
return false;
//p=getElem(L);
for(i=L.length;i>=p;--i)
L.data[i]=L.data[i-1];
L.data[p-1]=e;
L.length++;
return true;
}
bool deleteList(Sqlist &L,int p,ElemType &e) //删除位置为p的元素
{
int i;
if(p<1||p>L.length+1)
return false;
e=L.data[p-1];
//p=getElem(L);
for(i=p;i<L.length;++i)
L.data[i-1]=L.data[i];
// L.data[p]=e;
L.length--;
return true;
}
void Showlink(Sqlist &L)
{
int i;
printf("顺序表中元素为:");
for(i=0;i<L.length;i++)
{
printf("%5d",L.data[i]);
}
printf("\n");
}
int main()
{
int position,e;
Sqlist L;
L.length=0; //初始化线性表长度为0
Createlink(L);
Showlink(L);
//getElem(L);
int temp = getElem(L);
printf("此元素在顺序表中位置为:%d",temp);
printf("\n");
printf("请依次输入要插入的位置和要插入的元素,以空格间隔:");
scanf("%d %d",&position,&e);
insertList(L,position,e);
Showlink(L);
printf("请输入要删除的线性表元素的位置:");
scanf("%d ",&position);
deleteList(L,position,e);
Showlink(L);
return 0;
}
运行结果截图