1.代码部分
void menu()
{
printf("*********************************************\n");
printf("**************顺序表的实现********************\n");
printf("***********1.头插*****2.头删******************\n");
printf("***********3.尾插*****4.尾删******************\n");
printf("***********5.打印*****6.退出******************\n");
printf("***********7.查找顺序表里数据******************\n");
printf("***********8.指定位置插入数据******************\n");
printf("***********9.指定位置删除数据******************\n");
printf("*********************************************\n");
}
void testmenu()
{
sl sl1;
seqlistinit(&sl1);
int input = 0;
int x = 0;
int pos = 0;
while (input != 6)
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
printf("请输入你想要头插的数据,以6结束\n");
scanf("%d", &x);
while (x != 6)
{
seqlistpushfront(&sl1, x);
scanf("%d", &x);
}
break;
case 2:
seqlistpopfront(&sl1);
break;
case 3:
printf("请输入你想要尾插的数据,以6结束\n");
scanf("%d", &x);
while (x != 6)
{
seqlistpushback(&sl1, x);
scanf("%d", &x);
}
break;
case 4:
seqlistpopback(&sl1);
break;
case 5:
seqlistprint(&sl1);
break;
case 6:
break;
case 7:
printf("请输入你想要查找的数据\n");
scanf("%d", &x);
int ret = seqlistfind(&sl1, x);
if (ret >= 0)
{
printf("查找的数据存在,下标是%d\n",ret);
}
else
{
printf("要查找的数据不存在\n");
}
break;
case 8:
printf("请输入你想要插入的数据\n");
scanf("%d", &x);
printf("请输入你想要插入的数据下标\n");
scanf("%d", &pos);
seqlistinsert(&sl1, pos, x);
break;
case 9:
printf("请输入你想要删除的数据的下标\n");
scanf("%d", &x);
seqlisterase(&sl1, x);
break;
default:
printf("输入错误,请重新输入\n");
break;
}
}
seqlistdestory(&sl1);
}
int main()
{
testmenu();
return 0;
}
2.备注
(1)通过菜单栏,可实现顺序表里面自己设计的功能,我们可以进行随机的选择;
(2)我们设置input!6是因为输入6的时候程序会退出,防止重复;
(3)我们在case3里面设计循环是为了一次性可以输入多个数据,一次向顺序表里面插入多个数据,而不是一次只能输入一个数据;但是这样做的缺陷就是不能插入数字6;我们这里必须设置一个结束的标记,否则程序运行起来的时候就会让我们不断地进行输入,无法控制;
(4)我们在循环的外面要进行顺序表的初始化和顺序表的销毁。