L2-022. 重排链表(双队列)
L2-022. 重排链表
给定一个单链表 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是下一结点的地址。题目保证给出的链表上至少有两个结点。
输出格式:
对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。
输入样例:
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提交代码
对于昨天这场比赛,内心有点无奈。刚刚学的双队列
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<stack>
#include<vector>
#include<deque>
#include<list>
#include<set>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
struct node
{int add;int id;int next;
}s[maxn];
node gg[maxn];
node yy[maxn];
int main()
{int beginn,n;scanf("%d %d",&beginn,&n);int x,y,z;for(int i=1;i<=n;i++){scanf("%d %d %d",&x,&y,&z);s[x].add=x;s[x].id=y;s[x].next=z;}deque<node>qu;int tt=beginn;while(tt!=-1){qu.push_back(s[tt]);gg[s[tt].id]=s[tt];tt=s[tt].next;}//这个好了 接下来就是说换一下queue<node>qq;while(qu.empty()==0){node tmp=qu.back();qu.pop_back();qq.push(tmp);if(qu.empty()==1)break;tmp=qu.front();qu.pop_front();qq.push(tmp);} while(qq.empty()==0){node tmp=qq.front();qq.pop();if(qq.empty()==1){printf("%05d %d %d\n",tmp.add,tmp.id,-1);break;}else {node a=qq.front();printf("%05d %d %05d\n",tmp.add,tmp.id,a.add);}}return 0;
}
L2-022. 重排链表(双队列)相关推荐
- 【L2-022 重排链表】天梯赛L2系列详细解答
天梯赛L2-022 重排链表 题目详情: 输入样例: 00100 6 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 6823 ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- 【每日一算法】重排链表
微信改版,加星标不迷路! 每日一算法-重排链表 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→L ...
- LeetCode-笔记-143. 重排链表
LeetCode-笔记-143. 重排链表 143. 重排链表 给定一个单链表 L:L0→L1→-→L**n-1→Ln , 将其重新排列后变为: L0→L**n→L1→L**n-1→L2→L**n-2 ...
- 数据结构与算法:链表,队列,栈,递归,有序表
反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...
- Java多重链表_Java实现 LeetCode 143 重排链表
143. 重排链表 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节 ...
- 【CCCC】L2-022 重排链表 (25分),,链表遍历
problem L2-022 重排链表 (25分) 给定一个单链表 L 1 →L 2 →⋯→L n−1 →L n ,请编写程序将链表重新排列为 L n →L ...
- 重排链表-c语言链表法解决
重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...
- 【区块反转】【链表合并】【反转链表】【链表元素分类】【链表去重】【重排链表】
目录 说明: 1110 区块反转 输入格式: 输出格式: 输入样例: 输出样例: 1105 链表合并 输入格式: 输出格式: 输入样例: 输出样例: 1025 反转链表 输入格式: 输出格式: 输入样 ...
- 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必问之 链表 + 栈 + 队列 部分!
链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力.链表的操作也离不开指针,指针又很容易导致出错. 综合多方面的原因,链 ...
最新文章
- 帅气逼人的Redis可视化工具
- 洛谷P1373 小a和uim之大逃离
- ASP.NET Razor (标记)语言概要
- Java每天10道面试题,跟我走,offer有!(七)
- SAP ABAP 异常处理
- Netbeans搭建Android环境
- 【题解】Luogu P3674 小清新人渣的本愿
- [洛谷P4174][NOI2006]最大获利
- 被动声呐 相移波束形成_100天计划-DAY9-拖曳声呐
- ubuntu Django项目后台不挂断运行之screen命令
- HTML5清爽简洁外贸网站模板
- Bezier(贝塞尔)曲线(五阶)的轨迹规划在自动驾驶中的应用(五)
- SpringBoot整合kafka(安装)
- Excel如何导出自定义架构xml
- QCA9377驱动调试
- ACM算法分类及完成情况
- 少儿编程市场调研分析
- 苹果电脑怎么进入安全模式教程
- 漂浮广告代码 php,JS带关闭按钮的网页漂浮广告代码
- 备战秋招之数电知识查漏补缺
热门文章
- delphi 创建一个纯文本文件
- 一个计算周次和本周时间范围的代码(c#)
- DataSet与XML导入导出方法
- stm32如何执行软复位_stm32f7软件复位 stm32f0 软件复位
- [C#]System.Timers.Timer(2)
- spring --(16)AOP前置通知与后置通知
- Android 实现全屏、无标题栏
- 自动化部署关于在ubuntu下的docker容器折腾小记
- win7中竟然没有telnet.exe??
- 怀疑Alexa算法调整,清理一批网站