题目描述
(线性表)请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为1。线性表的最大长度为1000。
输入
各个命令以及相关数据,它们对应的格式如下:
在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值
清除线性表:clear
获取某个位置的元素:getelem,接下来一行是需要获取的元素位置
删除某个位置的元素:delete,接下来一行是被删除的元素位置
当输入的命令为exit时,程序结束
输出
当输入的命令为getelem时,请输出获取的元素值,
当输入的命令是delete时,请输出被删除的那个元素值
注意,所有的元素均占一行
样例输入
insert
2
1 1
2 2
delete
1
clear
insert
2
1 3
2 4
getelem
2
exit
样例输出
1
4
参考代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,m,i,j;
char c[10],d[4][10]={"insert","clear","getelem","delete"};
gets(c);
while(strcmp(c,"exit"))
{
struct
{
int date;
}
*s;
if(!strcmp(c,d[0]))
{
scanf("%d",&n);
s=malloc(sizeof(*s)*n);
for (i=0;i<n;i++)
{
scanf("%d",&j);
scanf("%d",&s[j].date);
}
getchar();
} else if(!strcmp(c,d[1]))
{
s=NULL;
} else if(!strcmp(c,d[2]))
{
scanf("%d",&m);
printf("%dn",s[m].date);
getchar();
}
else if(!strcmp(c,d[3]))
{
scanf("%d",&m);
printf("%dn",s[m].date);
getchar();
}
gets(c);
}
return 0;
}
解析
暂无