- 1000ms
- 32768K
通过前面几节,我们就学完了顺序表的查找、删除以及遍历操作啦。还是和之前一样,现在需要你独立的去实现一遍这些代码,我们会给出基本的框架,你只要在相应的方法内完善它们就好了。
相信你已经了解了我们的评判机制,我们会给出几组输入数据,通过你的程序相应的得到一些输出数据,只要你的输出数据和我们标准的输出一致就能通过这道难题了。如果遇到困难就重新温习前面的内容吧,一定不要直接利用之前的代码!
我们已经建立好了一个容量为 20 的顺序表,你需要对其执行一系列的操作。
输入格式
第一行输入一个正整数 m(1≤m≤100),代表一共有 m 个操作。
接下来输入 m 行,每行首先输入一个整数 t,分别代表以下操作:
- t=1,代表插入操作,输入两个整数 a和 b(0≤a,b≤100),表示在 a 的位置上擦入元素 b,如果插入成功输出
success
,否则输出failed
。 - t=2,代表删除操作,输入一个整数 a(0≤a≤100),删除位置 a 上的元素,如果删除成功输出
success
,否则输出failed
。 - t=3,代表查找操作,输入一个整数 a(0≤a≤100),查找元素值为 a 的元素,如果查找成功输出
success
,否则输出failed
。 - t=4,代表遍历操作,输出当前顺序表的所有元素。
输出格式
对应每个操作,输出结果。对于前三个操作,如果操作成功输出success
,否则输出failed
;对于第四个操作,从下标为 0 的位置开始输出当前顺序表的所有元素,每两个整数之间一个空格,最后一个整数后面没有空格。
样例输入
9 1 0 1 1 5 2 1 1 2 1 2 3 3 2 2 2 2 9 3 3 4
样例输出
success failed success success success success failed failed 1 2
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
template <typename Type> class Vector {
private:
int size,length;
Type* data;
public:
Vector(int input_size) {
size = input_size;
data = new Type[size];
length = 0;
}
~Vector() {
delete[] data;
}
bool insert(int loc,Type val) {
if(loc<0 || loc>length) {cout << "failed" << endl; return false;}
if(length >= size) expand();
for(int i=length;i>loc;i--){
data[i] = data[i-1];
}
data[loc] = val;
length++;
cout << "success" << endl;
return true;
}
void expand() {
Type* old_data = data;
size *=2;
data = new Type[size];
for(int i=0;i<length;i++){
data[i] = old_data[i];
}
delete[] old_data;
}
bool search(const Type &val) {
for(int i=0;i<length;i++){
if(data[i] == val) {cout << "success" << endl; return true;}
}
cout << "failed" << endl;
return false;
}
bool remove(int index) {
if(index<0 || index>=length) {cout << "failed" << endl; return false;}
for(int i=index+1;i<length;i++) {
data[i-1] = data[i];
}
length--;
cout << "success" << endl;
return true;
}
void print() {
for(int i=0;i<length;i++){
if(i) cout << " ";
cout << data[i];
}
cout << endl;
}
};
int main() {
Vector<int> v(20);
int n;
cin >> n;
while(n--) {
// 请在此处完成代码
int ord,a=0,b=0;
cin >> ord;
if(ord==1){
cin >> a >> b;
v.insert(a,b);
}else if(ord==2){
cin >> a;
v.remove(a);
}else if(ord==3){
cin >> a;
v.search(a);
}else if(ord==4) v.print();
}
return 0;
}