1025. 反转链表 (25)-浙大PAT乙级真题
给定一个常数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乙级真题相关推荐
- 1035. 插入与归并(25)-浙大PAT乙级真题
根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭代 ...
- 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现
1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...
- 1040. 有几个PAT(25)- PAT乙级真题
字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T).现给定字符串,问一 ...
- 1048. 数字加密(20)-浙大PAT乙级真题
1048. 数字加密(20) 本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余--这里 ...
- 1033. 旧键盘打字(20)-浙大PAT乙级真题
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以及应该输入的文 ...
- 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 ...
- PAT乙级1025反转链表 25(分)
1025 反转链表 (25 分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为3→2→1→6→5→ ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- 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, ...
最新文章
- 如何使用ActionScript来检测用户的操作系统种类及浏览器类型
- 【大数据论文笔记】大数据技术研究综述
- jquery ready方法实现原理
- C#利用反射将实体类ListT转化为Datatable
- SQLServer查找已知数相邻前后数
- Eigen--Array
- P2419 [USACO08JAN]牛大赛Cow Contest
- js 和 css动画
- 华住数据库_华住内控人系列故事(四)技术领先篇——搭建大数据风险数据仓,实现自助取数...
- 03-19 分布式测试-Selenium Grid
- LeetCode91 Decode Ways
- Python开发【第十八篇】Web框架之Django【基础篇】
- 仿王者荣耀JS示例代码
- 超详细!JDK 8 下载、安装和环境配置(macOS 和 Windows 版本)
- java中的Cipher类
- 让创意设计更加简单:在线设计平台Canva登陆中国
- 创业反鸡汤--3.谈待遇
- 在树莓派计算模块CM4 eMMC上安装Ubuntu Server 21.10
- CG 函数之选手得分
- 小米6无人直播详细教程+工具包
热门文章
- spring中bean属性scope
- java反射经典实例 Java Reflection Cookbook
- 一个iOS开发者的Flutter“历险记”
- route-policy和ACL组合时permit和deny的作用
- ogg启动报错libnnz11.so: cannot open shared object file
- 模拟Windows任务管理器CPU使用率的动态折线图-农夫山泉
- DSO missing from command line原因及解决办法
- 已root手机在DDMS下无法读取data目录的解决办法
- SoftPAC 虚拟控制器漏洞使 OT 网络易受攻击
- 运行maven项目整合ssm时的错误笔记