给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 10^5)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。
接下来有N行,每行格式为:Address Data Next
其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

输出格式:

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

输入样例:

00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

输出样例:

00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

分析:输入样例正确连接顺序应该是:
/*
00100 1 12309
12309 2 33218
33218 3 00000
00000 4 99999
99999 5 68237
68237 6 -1
*/
还应该考虑输入样例中有不在链表中的结点的情况。所以用个sum计数~

而且,algorithm头文件里面有reverse函数可以直接调用~

#include <iostream>
#include <algorithm>
using namespace std;
int main() {int first, k, n, temp;cin >> first >> n >> k;int data[100005], next[100005], list[100005];for (int i = 0; i < n; i++) {cin >> temp;cin >> data[temp] >> next[temp];}int sum = 0;//不一定所有的输入的结点都是有用的,加个计数器while (first != -1) {list[sum++] = first;first = next[first];}for (int i = 0; i < (sum - sum % k); i += k)reverse(begin(list) + i, begin(list) + i + k);for (int i = 0; i < sum - 1; i++)printf("%05d %d %05d\n", list[i], data[list[i]], list[i + 1]);printf("%05d %d -1", list[sum - 1], data[list[sum - 1]]);return 0;
}

1025. 反转链表 (25)-浙大PAT乙级真题相关推荐

  1. 1035. 插入与归并(25)-浙大PAT乙级真题

    根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭代 ...

  2. 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

    1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...

  3. 1040. 有几个PAT(25)- PAT乙级真题

    字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T).现给定字符串,问一 ...

  4. 1048. 数字加密(20)-浙大PAT乙级真题

    1048. 数字加密(20) 本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余--这里 ...

  5. 1033. 旧键盘打字(20)-浙大PAT乙级真题

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以及应该输入的文 ...

  6. c语言最大字符1025,1025 反转链表 (25 分)C语言

    题目描述 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为 3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5 ...

  7. PAT乙级1025反转链表 25(分)

    1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...

  8. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  9. PAT 1025 反转链表 (25)(STL-map+思路+测试点分析)

    1025 反转链表 (25)(25 分) 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4, ...

最新文章

  1. 如何使用ActionScript来检测用户的操作系统种类及浏览器类型
  2. 【大数据论文笔记】大数据技术研究综述
  3. jquery ready方法实现原理
  4. C#利用反射将实体类ListT转化为Datatable
  5. SQLServer查找已知数相邻前后数
  6. Eigen--Array
  7. P2419 [USACO08JAN]牛大赛Cow Contest
  8. js 和 css动画
  9. 华住数据库_华住内控人系列故事(四)技术领先篇——搭建大数据风险数据仓,实现自助取数...
  10. 03-19 分布式测试-Selenium Grid
  11. LeetCode91 Decode Ways
  12. Python开发【第十八篇】Web框架之Django【基础篇】
  13. 仿王者荣耀JS示例代码
  14. 超详细!JDK 8 下载、安装和环境配置(macOS 和 Windows 版本)
  15. java中的Cipher类
  16. 让创意设计更加简单:在线设计平台Canva登陆中国
  17. 创业反鸡汤--3.谈待遇
  18. 在树莓派计算模块CM4 eMMC上安装Ubuntu Server 21.10
  19. CG 函数之选手得分
  20. 小米6无人直播详细教程+工具包

热门文章

  1. spring中bean属性scope
  2. java反射经典实例 Java Reflection Cookbook
  3. 一个iOS开发者的Flutter“历险记”
  4. route-policy和ACL组合时permit和deny的作用
  5. ogg启动报错libnnz11.so: cannot open shared object file
  6. 模拟Windows任务管理器CPU使用率的动态折线图-农夫山泉
  7. DSO missing from command line原因及解决办法
  8. 已root手机在DDMS下无法读取data目录的解决办法
  9. SoftPAC 虚拟控制器漏洞使 OT 网络易受攻击
  10. 运行maven项目整合ssm时的错误笔记