有一个数据表,目前含有10个数据,现要求在这组数值上完成初始化、显示、插入、删除、定位、求长度等操作。-menu方法
#include"stdio.h"
//定义顺序表类型
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
void init_seqlist(SEQUENLIST *a)
{//初始化,将顺序表a初始化,数据表中第一个元素的下标为1
a->last=0;
}
void print_seqlist(SEQUENLIST *a)
{//打印函数
int i;
printf("顺序表元素为:\n");
for(i=1;i<=a->last;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
int insert_seqlist(SEQUENLIST *a,DATATYPE1 x,int i)//a是顺序表,x是插入值,i是插入位置
{//插入函数
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)//i的非法位置
return 0;
else
{
if(i>a->last)//i在最后面时
{
a->datas[i]=x;
a->last=i;
}
else
{
for(k=a->last;k>=i;k--)//i在中间时
a->datas[k+1]=a->datas[k];
a->datas[i]=x;
a->last=a->last+1;
}
return 1;
}
}
int delete_seqlist(SEQUENLIST *a,int i)//a为顺序表,i为删除的位置
{//删除函数
int k;
if(i<1||i>a->last||a->last==0)//i的非法位置
{
return 0;
}
else
{
for(k=i;k<a->last;k++)
a->datas[k]=a->datas[k+1];
a->last--;
return 1;
}
}
int locate_seqlist(SEQUENLIST *a,DATATYPE1 x)
{//定位函数
int k;
k=1;
while(k<=a->last&&a->datas[k]!=x)
k++;
if(k<=a->last)
return k;
else
return 0;
}
int length_seqlist(SEQUENLIST *a)
{//求长度
return a->last;
}
void menu(void)
{
printf("\n\n 顺序表操作(请注意第一步操作,请选择1,先进行初始化)");
printf("\n*********************************************************");
printf("\n 1 初始化顺序表 2 插入一个元素");
printf("\n 3 删除一个元素 4 元素定位");
printf("\n 5 求顺序表长度 6 显示数据表");
printf("\n 0 退出");
printf("\n*********************************************************");
}
main()
{
SEQUENLIST a;
int x,i,k;
menu();
printf("\n请输入菜单序号:");
scanf("%d",&i);
while(i!=0)
{
switch(i)
{
case 1:init_seqlist(&a);
menu();
break;
case 2:
printf("\n请输入一个整数:");
scanf("%d",&x);
printf("\n请输入插入的序号:");
scanf("%d",&k);
if(insert_seqlist(&a,x,k)!=0)
menu();
else printf("操作有误\n");
break;
case 3:
printf("\n请输入删除的序号:");
scanf("%d",&k);
if(delete_seqlist(&a,k)!=0)
menu();
else printf("操作有误\n");
break;
case 4:
printf("\n请输入一个整数:");
scanf("%d",&x);
if(locate_seqlist(&a,x)!=0)
printf("\n%d在顺序表中的序号是%d",x,locate_seqlist(&a,x));
else printf("\n%d不在顺序表中",x);
menu();
break;
case 5:
printf("\n顺序表的长度为:%d",length_seqlist(&a));
break;
case 6:
printf("\n顺序表为:");
print_seqlist(&a);
menu();
break;
default:printf("\n操作有误");
}
printf("\n请输入菜单序号:");
scanf("%d",&i);
}
}
关注下面这个关注号,了解更多信息
头顶渐突终不悔,代码道出我的爱。