7-6 链表操作

对于输入的若干学生的信息(学号、姓名、年龄),要求使用链表完成:
(1)根据学生的信息建立逆序链表,并遍历该链表输出学生的信息;
(2)在第m个结点之后插入一个新学生结点并输出;
(3)删除某个学号的学生结点后输出。

输入格式:

首先输入一个正整数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;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三块不一样的石头

十分满意,一分打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值