栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PAT (Basic Level) Practice (中文)1110 区块反转 PAT乙级

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PAT (Basic Level) Practice (中文)1110 区块反转 PAT乙级

题目描述

给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转。例如:给定 L 为 1→2→3→4→5→6→7→8,K 为 3,则输出应该为 7→8→4→5→6→1→2→3。

输入格式

每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数 N ≤ 1 0 5 N ≤10^5 N≤105)、以及正整数 K (≤N),即区块的大小。结点的地址是 5 位非负整数,NULL 地址用 −1 表示。

接下来有 N 行,每行格式为:

Address Data Next

其中 Address 是结点地址,Data 是该结点保存的整数数据,Next 是下一结点的地址。

输出格式

对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

输入样例
00100 8 3
71120 7 88666
00000 4 99999
00100 1 12309
68237 6 71120
33218 3 00000
99999 5 68237
88666 8 -1
12309 2 33218
输出格式
71120 7 88666
88666 8 00000
00000 4 99999
99999 5 68237
68237 6 00100
00100 1 12309
12309 2 33218
33218 3 -1
分析

这题经典题目了 反转链表
取个巧 用vector做一下 这样子可以避免相邻节点的前后问题

AC code
  • 注意测试点6有在链表外的点, 因此n并不是链表的长度
#include 
#include 
#include 
using namespace std;

struct Node {
    int add;
    int next;
    int val;
    Node(int add_, int next_, int val_):add(add_), next(next_), val(val_){}
};
unordered_map add2node;
vector v;

int main() {
    int head, data, cur, next, add, n, k;
    cin >> head >> n >> k;
    for(int i = 0; i < n; i++) {
        cin >> cur >> data >> next;
        add2node[cur] = new Node(cur, next, data);
    }
    for (cur = head; cur != -1; cur = add2node[cur]->next) {
        v.push_back(add2node[cur]);
    }
    bool flag = false; // 是否是第一个输出的
    //这里把n变成v的大小, 可能有不在链表上的点
    n = v.size();
    for (int i = (n - 1)/k*k; i >= 0; i -= k) {
        for (int j = i; j < i + k && j < n; j++) {
            if (!flag) {
                printf("%05d %d ", v[j]->add, v[j]->val);
                flag = true;
            } else {
                printf("%05dn%05d %d ", v[j]->add, v[j]->add, v[j]->val);
            }
        }
    }
    printf("-1n");
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号