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 (≤) which is the total number of nodes, and a positive K (≤) 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 <iostream>
#include <vector>
#define M 100000
using namespace std;
struct ele{
int addr;
int data;
int next=-;
};
int main(){
int iniAddr,num,revNum,tmpAddr,tmpData,tmpNext;
ele element[M],last;
cin>>iniAddr>>num>>revNum;
while(num--){
cin>>tmpAddr>>tmpData>>tmpNext;
element[tmpAddr].addr=tmpAddr;
element[tmpAddr].data=tmpData;
element[tmpAddr].next=tmpNext;
}
vector<ele> vec;
while(iniAddr!=-){
vec.push_back(element[iniAddr]);
iniAddr=element[iniAddr].next;
}
//反转
int point=;bool start=true;
while(true){
point+=revNum;
if(point>vec.size()) break;
else{
for(int i=point-,j=;j<revNum;j++,i--){
if(start) printf("%05d ",vec[i].addr);
else printf("%05d\n%05d ",vec[i].addr,vec[i].addr);
printf("%d ",vec[i].data);
last=vec[i];
start=false;
}
}
}
point-=revNum;
for(int i=point;i<vec.size();i++){
if(start) printf("%05d ",vec[i].addr);
else printf("%05d\n%05d ",vec[i].addr,vec[i].addr);
printf("%d ",vec[i].data);
start=false;
last=vec[i];
}
printf("-1");
system("pause");
return ;
}

最新文章

  1. SpringMVC那点事
  2. Xcode7以后 使用空模板
  3. user profile services提示&ldquo;BAIL: MMS(7116): sql.cpp(8490): 0x80231334 (The sql connection string has unsupported values.)&rdquo;解决办法
  4. SQLChop、SQLWall(Druid)、PHP Syntax Parser Analysis
  5. paip.提升性能---string split
  6. [c#] const 与 readonly
  7. Lua函数之二
  8. HTML5自学笔记[ 15 ]canvas绘图实例之钟表
  9. WCF学习心得------(六)数据协定
  10. 【Binary Tree Inorder Traversal】cpp
  11. Lua print on the same line
  12. POJ2002Squares
  13. [iOS UI进阶 - 2.4] 彩票Demo v1.4 转盘动画
  14. Hadoop MapReduce概念学习系列之mr程序详谈(二十三)
  15. nginx 502
  16. IC卡存储器介绍
  17. Python 2.7 Exception格式化工具
  18. 黑马程序员:Java基础总结----正则表达式
  19. 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
  20. Tomcat(二):tomcat配置文件server.xml详解和部署简介

热门文章

  1. GMM-EM实验结果
  2. 自动创建数据库(DELPHI+SQL SERVER)
  3. if、elif 条件判断
  4. 生成器send方法、递归、匿名函数、内置函数
  5. 关于.Net Core+Angular+Ueditor富文本编辑器的使用方式
  6. WTForms常用的验证器
  7. MSSQL 索引
  8. 利用docker搭建本地私有镜像仓库
  9. [转帖]yum命令的使用与createrepo自建仓库教程
  10. Codeforces 1209D Cow and Snacks