#include<iostream>
#include<stdio.h>
#define MaxSize 10
using namespace std;
typedef struct{
int data[MaxSize];
int length;
}Sqlist;
void initlist(Sqlist &l)
{
for(int i = 0;i<MaxSize;i++)
l.data[i]=0;
l.length=0;
}
bool insertlist(Sqlist &l,int i,int e)
{
if (i<1||i>l.length+1)
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 deletelist(Sqlist &l,int i,int &e)
{
if (i<1||i>l.length)
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;
}
bool selectbylocation(Sqlist l,int location)
{
if (location<1||location>l.length)
{
printf("位序不合法,请重新查找\n");
return false;
}
else
{
printf("查找成功\n");
printf("位序为%d的值为%d\n\n",location,l.data[location-1]);
}
}
int selectbyvalue(Sqlist l,int e)
{
for(int i=0;i<l.length;i++)
if(l.data[i]==e)
{
printf("查找成功\n");
return i+1;
}
}
void updatevalue(Sqlist &l,int location,int e){
if(location<1||location>l.length)
printf("位序不合法\n");
else
{
l.data[location-1]=e;
printf("修改成功\n\n");
}
}
void menu()
{
printf("选择功能\n");
printf("0:退出\n");
printf("1:插入功能\n");
printf("2:删除功能\n");
printf("3:按位查找\n");
printf("4:按值查找\n");
printf("5:修改指定位序处的值\n");
}
int main()
{
int location,value=0;
int e=0;
int option=0;
Sqlist l;
initlist(l);
while(1)
{
menu();
scanf("%d",&option);
if (option == 0)
{ printf("退出成功\n\n");
break;
}
switch(option){
case 1:
printf("请输入要插入的位置以及数据\n");
scanf("%d %d",&location,&value);
if(insertlist(l,location,value))
printf("插入成功\n\n");
else
printf("位序i不合法,插入失败。\n\n");
break;
case 2:
printf("请输入要删除的元素的位序\n");
scanf("%d",&location);
if (deletelist(l,location,e))
{
printf("成功删除第%d个元素,值为%d\n\n",location,e);
}
else
printf("位序i=%d不合法,删除失败\n\n",location);
break;
case 3:
printf("请输入位序\n");
scanf("%d",&location);
selectbylocation(l,location);
break;
//按值查找(该值在顺序表中第一次出现的位置)
case 4:
printf("请输入元素的值\n");
scanf("%d",&e);
location=selectbyvalue(l,e);
printf("值为%d对应的位序为%d\n\n",e,location);
break;
case 5:
printf("输入要修改的位序以及预期的值\n");
scanf("%d %d",&location,&e);
updatevalue(l,location,e);
break; }
}
system("pause");
return 0;
}