【TOJ 1214】数据结构练习题――线性表操作(vector实现)
程序员文章站
2022-09-07 20:05:49
Description 请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为1。线性表的最大长度为1000。 Input 各个命令 ......
Description
请你定义一个线性表,可以对表进行“在某个位置之前插入一个元素”、“删除某个位置的元素”、“清除所有元素”、“获取某个位置的元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,线性表元素为整数,线性表的第一个元素位置为1。线性表的最大长度为1000。
Input
各个命令以及相关数据,它们对应的格式如下:
在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值
清除线性表:clear
获取某个位置的元素:getelem,接下来一行是需要获取的元素位置
删除某个位置的元素:delete,接下来一行是被删除的元素位置
当输入的命令为exit时,程序结束
Output
当输入的命令为getelem时,请输出获取的元素值,
当输入的命令是delete时,请输出被删除的那个元素值
注意,所有的元素均占一行
Sample input
insert
2
1 1
2 2
delete
1
clear
insert
2
1 3
2 4
getelem
2
exit
Sample output
1
4
#include<vector> #include<iostream> #include<cstring> using namespace std; int main() { vector<int>v; vector<int>::iterator it; char a[15]; int i,p,x,n,s; //s作为计数 while(scanf("%s",a)!=EOF) { s=1; //由于vector从0计数,而我们通常元素的计数从1开始 if(strcmp(a,"insert")==0) { scanf("%d",&n); for(i=1;i<=n;i++) { cin>>p>>x; //p是位置第p个,x是第p个元素的值 v.insert(v.begin()+p-1,x); //由于vector从0计数,所以插入第p个元素的位置需-1 } } else if(strcmp(a,"clear")==0) { v.clear(); } else if(strcmp(a,"exit")==0) break; else if(strcmp(a,"getelem")==0) { cin>>n; for(it=v.begin();it!=v.end();it++,s++) if(s==n) { cout<<*it<<endl; break; } } else if(strcmp(a,"delete")==0) { cin>>n; for(it=v.begin();it!=v.end();s++) if(s==n) //第n个元素 { cout<<*it<<endl; it=v.erase(it); //删除元素,返回值指向已删除元素的下一个位置 break; } else it++; //指向下一个位置 } } }
上一篇: 人生感悟图。一张美图一个感悟必
下一篇: 炒鸡蛋漫画集