对于输入的若干学生的信息(学号、姓名、年龄),要求使用链表完成: 输入格式:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n表示学生的个数(1≤n≤100);然后输入n行信息,分别表示学生的学号、姓名(不含空格且长度都不超过10的字符串)和年龄(正整数);接下来输入整数m(1≤m≤n)和一个新学生的学号、姓名、年龄;最后输入待删学生的学号(可能不存在,此时不需删除)。 |
输入样例:
2
3
1201 Zhangsan 20
1202 Lisi 21
1204 Wangwu 20
2 1203 Zhaoliu 19
1204
2
1201 Lisi 20
1202 Wangwu 20
2 1203 Zhaoliu 19
1204
输出样例:
1204 Wangwu 20
1202 Lisi 21
1201 Zhangsan 20
1204 Wangwu 20
1202 Lisi 21
1203 Zhaoliu 19
1201 Zhangsan 20
1202 Lisi 21
1203 Zhaoliu 19
1201 Zhangsan 20
1202 Wangwu 20
1201 Lisi 20
1202 Wangwu 20
1201 Lisi 20
1203 Zhaoliu 19
1202 Wangwu 20
1201 Lisi 20
1203 Zhaoliu 19
考察 : 数据结构与链表 |
注意 : 无 |
思路 : 见代码 |
C/C++
#include<bits/stdc++.h>
using namespace std;
struct Student{
string id,name;
int age;
}s1;
vector<Student> box;
void PrintAll(){
for(const Student& x:box) cout << x.id << ' ' << x.name << ' ' << x.age << endl;
}
void Delete(string id){
for(long z=0;z<box.size();z++){
if(box[z].id==id){
box.erase(box.begin()+z);
return;
}
}
}
int main()
{
int n,num;
cin >> n;
while (n--){
box.clear();
cin >> num;
while (num--){
cin >> s1.id >> s1.name >> s1.age;
box.insert(box.begin(),s1);
}
PrintAll();
cin >> num >> s1.id >> s1.name >> s1.age;
box.insert(box.begin()+num,s1);
PrintAll();
cin >> s1.id;
Delete(s1.id);
PrintAll();
if(n>0) cout << endl;
}
return 0;
}