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

输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (<= 10^5^)。结点的地址是5位非负整数,NULL地址用-1表示。
接下来有N行,每行格式为:
Address Data Next
其中Address是结点地址;Data是该结点保存的数据,为不超过10^5^的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。

输出格式:

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

输入样例:
00100 6
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

输出样例:
68237 6 00100
00100 1 99999
99999 5 12309
12309 2 00000
00000 4 33218
33218 3 -1

分析:用结构体{id, data, next}存储节点信息,模拟链表。先遍历一遍链表,把有用数节点存起来(甲级乙级中,姥姥为了加大难度,加了好多不在链表中的干扰数据)然后从后往前交替输出,(先把顺序存在ans中,待会统一输出),l, r代表将要输出的节点位置,当(l-1)-(r+1) == 1时都遍历一遍了,可退出循环。

#include <iostream>
#include <vector>
using namespace std;
struct node{int id, data, next;
};
int main() {int begin, n;cin >> begin >> n;node a[100010];vector<node> v, ans;for(int i = 0; i < n; i++) {int tbegin, tdata, tnext;cin >> tbegin >> tdata >> tnext;a[tbegin] = {tbegin, tdata, tnext};}while(begin != -1) {v.push_back(a[begin]);begin = a[begin].next;}int l = 0, r = v.size() - 1;while(1) {ans.push_back(v[r]);r--;if((r + 1) - (l - 1) == 1) break;ans.push_back(v[l]);l++;if((r + 1) - (l - 1) == 1) break;}for(int i = 0; i < ans.size(); i++) {if(i != ans.size() - 1)printf("%05d %d %05d\n", ans[i].id, ans[i].data, ans[i+1].id);elseprintf("%05d %d -1\n", ans[i].id, ans[i].data);}return 0;
}

L2-022 重排链表-PAT团体程序设计天梯赛GPLT相关推荐

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

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-002 链表去重 题目大意 将链表数据域的值相同(包含绝对值相同)的节点去掉,然后将去掉的节点又重新组成一条链表,最后输出去重后的链表和被去掉的节 ...

  2. L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...

  3. L1-079 天梯赛的善良 (20 分)-PAT 团体程序设计天梯赛 GPLT

    天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是命题组首先将编程能力划分成了 106个等级( ...

  4. L1-078 吉老师的回归 (15 分)-PAT 团体程序设计天梯赛 GPLT

    曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的.只包括可打印符号的字符串描述出来,如:Problem A: Print &q ...

  5. [Python] L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  6. L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  7. L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  8. L2-002. 链表去重-PAT团体程序设计天梯赛GPLT

    给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点.即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留.同时,所有被删除的结点必须被保存在另外一个链表中.例 ...

  9. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

最新文章

  1. 为什么函数式编程很重要:不一样的白板图
  2. Mono 开发 (使用.NET技术的你,绝对不能忽略Mono)
  3. 1.4 案例:广告预测、房价预测
  4. 如何在 Mac 上关闭睡眠模式?
  5. pyspark使用anaconda后spark-submit方法(本人对其他文章进行的补充)
  6. Atitit.工作流系统的本质是dsl 图形化的dsl  4gl
  7. 多年 iOS 开发经验总结
  8. siteserver模板html5,SiteServer CMS软件模板制作教程
  9. MC9S中断函数编写
  10. feedsky 话题 营销
  11. linux网络应用环境,Linux网络环境使用新闻组客户端
  12. tar解压时提示Cannot open: File exists
  13. EXCEL表格-VLOOKUP多对一结果匹配方法(通配符)
  14. c# 屏幕取词的方法
  15. Xen与XenServer的区别
  16. 一位阿里导师给大学生的忠告
  17. 读书笔记3——《如何高效学习》:斯科特·扬
  18. 磁盘配额管理disk quotas
  19. 计算机考研难度档,计算机考研院校报考难度排行[文].pdf
  20. Hadoop实战学习(3)-读取数据库内容

热门文章

  1. Android学习小Demo(13)Android中关于ContentObserver的使用
  2. 算法学习(二)快速排序(上)
  3. JavaScript知识点之:delete操作符
  4. Session的创建与销毁时机
  5. 我们来判断一个php函数是否被定义
  6. 微软最有价值专家大中华峰会开幕视频
  7. 201507之佛山移动实习
  8. 让网站和APP更具动感的几点建议
  9. sqoop 中文文档 User guide 三 export
  10. Atlassian 修复严重的 Jira 认证绕过漏洞