Description
给出一个包含N个数的序列,对这个序列进行增删和打印操作。
Input
输入包含T组测试数据。
开头是一个正整数T (0<T<10),为测试数据数量。
对于每组测试数据,第一行是一个正整数N (0<N<=100000)。
第二行是N个正整数,代表这个序列中的N个元素。每个元素均小于10000。
第三行是一个正整数Q (0<Q<=20) 代表操作次数。接下来有Q行,若为增添操作,格式为“U i j”,表示在下标(以0开始)为i的元素前插入一个j,若为删除操作,则格式为“D i”,表示删除下标(以0开始)为i的元素,若为打印操作,直接为一个字母“P”,表示将当前序列输出到屏幕上。系统保证输入的下标均合法(下标不会指向一个不存在的元素)。
Output
每次操作完成后都将新序列输出,数列间的每一个元素用空格隔开,最后一个元素后面不能有空格。
每组测试数据之后加一个空行。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> num(n);
for (int i = 0; i < n; i++) {
cin >> num[i];
}
int q;
cin >> q;
while (q--) {
char c;
cin >> c;
int i, j;
if (c == 'U') {
cin >> i >> j;
num.insert(num.begin() + i, j);
}
if (c == 'D') {
cin >> i;
num.erase(num.begin() + i);
}
if (c == 'P') {
int len = num.size();
for (int k = 0; k < len; k++) {
if (k == 0)
cout << num[0];
else cout << " " << num[k];
}
cout << endl;
}
}
cout << endl;
}
return 0;
}
已知数组长度时,尽量不用push_back,数组增长时的空间开辟也要一定耗时。