码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 (≤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

    分析:L为输入链表,ans为答案链表,二维数组E为区块链表。先将链表数据记录在结构体A中,遍历A将链表正确顺序记录在链表L中,然后需要重新定义链表长度n(因为有输入中有无效的假结点信息)。遍历链表L,将每K个结点所分隔成的区块保存在二维数组E中,再从后往前将区块链表E中的值添加到答案链表ans中,最后根据格式输出ans链表就好啦~

    1. #include
    2. #include
    3. using namespace std;
    4. struct node {
    5. int data, next;
    6. }A[100001];
    7. vector<int> L, ans, E[100001];
    8. int s, n , a, t, k, mark, cnt, c;
    9. int main() {
    10. cin >> s >> n >> k;
    11. for (int i = 0; i < n; i++) {
    12. cin >> a;
    13. cin >> A[a].data >> A[a].next;
    14. }
    15. t = s;
    16. while (t != -1) {
    17. L.push_back(t);
    18. t = A[t].next;
    19. }
    20. n = L.size();
    21. for (int i = 0; i < n; i++) {
    22. E[c].push_back(L[i]);
    23. cnt++;
    24. if (cnt == k && i != n - 1) {
    25. cnt = 0;
    26. c++;
    27. }
    28. }
    29. for (int i = c; i >= 0; i--)
    30. for (auto it : E[i])
    31. ans.push_back(it);
    32. for (int i = 1; i < n; i++)
    33. printf("%05d %d %05d\n", ans[i - 1], A[ans[i - 1]].data, ans[i]);
    34. printf("%05d %d -1", ans.back(), A[ans.back()].data);
    35. return 0;
    36. }

  • 相关阅读:
    Cocos发布智能座舱解决方案“Cocos HMI”
    安科瑞基于物联网技术的基站能耗监控解决方案-Susie 周
    C语言从入门到精通之【基本运算符】
    Facebook公共主页受限需要提供哪些证件进行复审?
    14基于MATLAB的鲸鱼优化VMD参数,以熵值为适应度函数,对VMD参数惩罚因子和层数进行寻优,确定最优值并进行信号分解,程序已调通,可以直接运行。
    java计算机毕业设计医院挂号管理系统源程序+mysql+系统+lw文档+远程调试
    kubernetes 安装与部署
    CSRF和SSRF漏洞
    “中国国安部紧急警告”!境外公司利用加密货币诱使人员非法采集空间数据!当心不慎成“帮凶”!
    python (*)和(**)的用法
  • 原文地址:https://blog.csdn.net/liuchuo/article/details/126222351
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号