L2-022. 重排链表

时间限制
500 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→...。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (<= 105)。结点的地址是5位非负整数,NULL地址用-1表示。

接下来有N行,每行格式为:

Address Data Next

其中Address是结点地址;Data是该结点保存的数据,为不超过105的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。

输出格式:

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

输入样例:

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

输出样例:

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

不会链表的渣渣,各种STL... 模拟

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<string>
  5. #include<map>
  6. #include<vector>
  7. #include<deque>
  8. #include<algorithm>
  9. #define MAX 100005
  10. using namespace std;
  11.  
  12. struct rec{
  13. char add[];
  14. int dat;
  15. char nex[];
  16. }rec[MAX];
  17. struct Node{
  18. char add[];
  19. int dat;
  20. }node;
  21. vector<Node> v[MAX];
  22. deque<Node> q;
  23. int main()
  24. {
  25. int t,n,i;
  26. char add[];
  27. map<string,int> mpadd;
  28. map<string,int> mpdat;
  29. scanf(" %s %d",add,&n);
  30. t=;
  31. for(i=;i<=n;i++){
  32. scanf(" %s %d %s",rec[i].add,&rec[i].dat,rec[i].nex);
  33. if(!mpadd[rec[i].add]) mpadd[rec[i].add]=++t;
  34. if(!mpdat[rec[i].add]) mpdat[rec[i].add]=rec[i].dat;
  35. if(!mpadd[rec[i].nex]) mpadd[rec[i].nex]=++t;
  36. }
  37. for(i=;i<=n;i++){
  38. strcpy(node.add,rec[i].nex);
  39. node.dat=mpdat[rec[i].nex];
  40. v[mpadd[rec[i].add]].push_back(node);
  41. }
  42. while(strcmp(add,"-1")!=){
  43. strcpy(node.add,add);
  44. node.dat=mpdat[add];
  45. q.push_back(node);
  46. strcpy(add,v[mpadd[add]][].add);
  47. }
  48. int c=;
  49. while(q.size()){
  50. c++;
  51. if(c==){
  52. printf("%s %d",q.back().add,q.back().dat);
  53. q.pop_back();
  54. }
  55. else if(c&){
  56. printf(" %s\n%s %d",q.back().add,q.back().add,q.back().dat);
  57. q.pop_back();
  58. }
  59. else{
  60. printf(" %s\n%s %d",q.front().add,q.front().add,q.front().dat);
  61. q.pop_front();
  62. }
  63. }
  64. printf(" -1\n");
  65. return ;
  66. }

GPLT天梯赛 L2-022. 重排链表的更多相关文章

  1. 团体程序设计天梯赛-练习集L2-002. 链表去重

    L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除 ...

  2. PTA天梯赛L2

    L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...

  3. L1-023 输出GPLT (20 分) java题解 GPLT天梯赛防坑技巧

    上题目先 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的 ...

  4. pat甲级 团体天梯赛 L2-022. 重排链表

    L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...

  5. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  6. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. L2-022. 重排链表

    L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...

  8. PAT L1 049 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  9. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

随机推荐

  1. ios Symbol(s) not found for architecture arm64总结 含隐藏错误cocoapods

    一.通用 报错:Desktop/project/ASDF/WEIXIN/libWeChatSDK.a (3 slices) Undefinedsymbols for architecture arm6 ...

  2. wepy error Parsing error: Unexpected token :

    mpBMCwepy\wepy.config.js eslint  信息 全局重装wepy-clinpm install wepy-cli -g -registry=https://registry.n ...

  3. TVirtualStringTree的Minimal例子学习

    预步骤第一步,定义数据结构type PMyRec = ^TMyRec; TMyRec = record Caption: WideString; end;预步骤第二步,规定取得节点数据时候的大小pro ...

  4. 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/37596763 网格动作类似于动作特效,能够实现翻转. ...

  5. 破解powerdesigner教程

    点Tool

  6. 常见的CSS命名

    1:header(头部)logo  topbar lang search topmenu banner nav headbox active(活动的) selectselectTop selectLi ...

  7. Oracle约束的使用

    --5个约束,主键约束.外键约束.唯一约束.检查约束.非空约束. --添加主键约束 Alter table table_name Add constraints constraint_name Pri ...

  8. jQuery Validate 插件为表单提供了强大的验证功能

    之前项目开发中,表单校验用的jQuery Validate 插件,这个插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的 ...

  9. 检测UTF-8编码

    在PHP检测字符串是否是UTF-8编码的时候,很多人在使用mb_detect_encoding的时候,经常遇到检测不准的问题,下面的方法可以准确检测编码是否是UTF-8 function check_ ...

  10. 分享知识-快乐自己:Excel快速导入Oracle 数据库

    需求: oracle 数据库有一个student表,现有一个excel表:student.xlsx,需导入oracle数据库student表中. student表的拥有者是c##MLQ1  密码为:x ...