线性表操作(线性表)
时间: 1ms 内存:128M
描述:
(线性表)请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为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
提示:
参考答案(内存最优[752]):
#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("%d\n",s[m].date);
getchar();
}
else if(!strcmp(c,d[3]))
{
scanf("%d",&m);
printf("%d\n",s[m].date);
getchar();
}
gets(c);
}
return 0;
}
参考答案(时间最优[0]):
#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("%d\n",s[m].date);
getchar();
}
else if(!strcmp(c,d[3]))
{
scanf("%d",&m);
printf("%d\n",s[m].date);
getchar();
}
gets(c);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。