pat02-线性结构1. Reversing Linked List (25)
02-线性结构1. Reversing Linked List (25)
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K = 3, then you must output 3→2→1→6→5→4; if K = 4, you must output 4→3→2→1→5→6.
Input Specification:
Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (<= 105) which is the total number of nodes, and a positive K (<=N) which is the length of the sublist to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.
Then N lines follow, each describes a node in the format:
Address Data Next
where Address is the position of the node, Data is an integer, and Next is the position of the next node.
Output Specification:
For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.
Sample Input:
00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218
Sample Output:
00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1
#include <cstdio>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
struct node{
int now,next,data;
};
node mem[];
vector<node> v;
int main(){
//freopen("D:\\INPUT.txt","r",stdin);
int h,now,data,next,num,k,temp;
scanf("%d %d %d",&h,&num,&k);
int i;
for(i=;i<num;i++){
scanf("%d %d %d",&now,&data,&next);
mem[now].now=now;
mem[now].data=data;
mem[now].next=next;
}
now=h;
while(now!=-){
v.push_back(mem[now]);
now=mem[now].next;
}
int length=v.size();
int round=length/k;
for(i=;i<round;i++){
reverse(v.begin()+i*k,v.begin()+i*k+k);
}
for(i=;i<length-;i++){
printf("%05d %d %05d\n",v[i].now,v[i].data,v[i+].now);
}
printf("%05d %d %d\n",v[i].now,v[i].data,-);//注意全反的情况
return ;
}
最新文章
- 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
- Quick Cocos 旋转子弹的实现中我学到的
- 关于CAShapeLayer的一些实用案例和技巧【转】
- Chrome书签被篡改之后的恢复
- ECSHOP始终显示全部分类方法
- 【Win10】单元测试中捕获异步方法的指定异常
- [BZOJ2820]YY的GCD
- Elevator 分类: HDU 2015-06-19 21:52 13人阅读 评论(0) 收藏
- sql数据库带补全终端命令
- div+css(ul li)实现图片上文字下列表布局
- 关于echarts的使用----模块化单文件引入(推荐) 与标签式单文件引入
- 反思java web的发展
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
- NoSQL数据库种类
- Android 设计模式实战之关于封装计费代码库的策略模式详谈
- Spring Security基于Java配置
- 【学习笔记】node.js重构路由功能
- 洛谷 P1706 全排列问题
- Centos 7 关闭selinux and firewall
- 学习笔记2—MATLAB的copyfile技巧
热门文章
- 阿里 vs. 腾讯,谁的收购更有眼光?
- ecliplse导入tomcat
- windows如何通过端口查看对应程序
- python 时间相关函数
- 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回
- Selenium3+python异常后截图(screenshot)
- P3705 [SDOI2017]新生舞会 01分数规划+费用流
- bit、Byte、bps、Bps、pps、Gbps的单位的说明及换算
- php代码书写习惯优化小结
- poll?transport=longpoll&;connection...烦人的请求