当前位置: 首页 > news >正文

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

坑点:

总体数据具有脏数据污染,也就是链表的实际节点数不为n,实际节点数要通道遍历链表进行计算。

#include<bits/stdc++.h> using namespace std; const int N=1e6+10; struct Node { int val; // 节点值 int next; // 下一个节点地址 }; Node node[N]; int main() { int head, n; cin >> head >> n; // 读入所有节点信息 for (int i = 0; i < n; i++) { int addr, val, nextAddr; cin >> addr >> val >> nextAddr; node[addr] = {val, nextAddr}; } // 把链表节点按顺序存入vector vector<int> cnt; for (int i = head; i != -1; i = node[i].next) { cnt.push_back(i); } // 新链表头 = 原链表最后一个节点 int newHead = cnt.back(); int tail = newHead; // 双指针:左指针从头开始,右指针从倒数第二个开始 int l = 0, r = cnt.size() - 2; // 交替连接:右→左→右→左... while (l < r) { // 尾节点 -> 左指针节点 node[tail].next = cnt[l]; tail = cnt[l]; // 左指针节点 -> 右指针节点 node[tail].next = cnt[r]; tail = cnt[r]; l++; r--; } // 如果最后剩下中间一个节点,单独接上 if (l == r) { node[tail].next = cnt[r]; tail = cnt[r]; } // 最后一个节点 next 置为 -1 node[tail].next = -1; // 遍历输出最终链表 for (int i = newHead; i != -1; i = node[i].next) { if (node[i].next != -1) printf("%05d %d %05d\n", i, node[i].val, node[i].next); else printf("%05d %d -1\n", i, node[i].val); } return 0; }
http://www.cnnetsun.cn/news/1651607.html

相关文章:

  • Windows下OpenClaw安装指南:对接Qwen3-14B镜像全流程
  • 深度解析:数据仓库与数据湖的核心区别及架构选型指南
  • 计算机人必知
  • 基于单片机的循迹避障小车(有完整资料)
  • Phi-4-mini-reasoning保姆级教程:从模型下载、路径配置到Gradio界面访问
  • PyTorch 2.8镜像真实案例:4090D单卡3分钟完成SDXL-Lightning微调出图
  • ArcGIS新手必看:用Shapefile数据5步算出全国城市水网密度并导出Excel
  • 给开发者的后量子密码入门:用OpenSSL 3.2亲手生成和验证一个双签名证书
  • GMS调试避坑指南:为什么清空Google服务框架数据能刷新device_id?
  • 阿里云百炼Coding Plan显示售罄、Lite版本停售、Pro版本买不到,怎么办?
  • 3步搞定!零基础玩转语音模型本地部署与推理实战教程
  • centos7实战:在快马平台用ai生成企业级web服务器完整部署方案
  • Sqlite3驱动版本选择指南:SpringBoot项目如何避免JDK兼容性问题
  • Windows11 WSL2安装Neo4j避坑指南:解决localhost:7474无法访问的5种方法
  • PICO4开发者的无线调试烦恼:我如何绕过CHFSGUI,用ADB直接安装APK
  • 颠覆性性能调校:GHelper极简华硕硬件控制完全指南
  • HS2-HF_Patch:突破游戏体验边界的技术赋能方案
  • Kandinsky-5.0-I2V-Lite-5s效果对比:Lite版在24GB显存下比Full版提速2.3倍
  • Phi-4-mini-reasoning保姆级部署教程:128K上下文轻量推理模型开箱即用
  • 避开这5个坑!MES工艺路线管理中的常见错误及解决方案
  • CH585蓝牙Notify功能实战:手把手教你从零配置到数据上报(附完整代码)
  • 别再死记硬背了!用Pikachu靶场实战,手把手拆解QT信号槽与Linux进程通信
  • AD22新手必看:从原理图到PCB的完整设计流程(附B站视频教程)
  • C++函数与运算符重载实战指南
  • FanControl智能控制:打造个性化配置的散热管理系统指南
  • IPA安装革新:iOS设备上的零门槛IPA安装工具App-Installer全解析
  • SolidWorks 2025零基础入门:从草图到三维建模操作
  • 保姆级教程:给你的个人理财工具(比如黄金计算器)加个数据备份和导出Excel功能
  • 走进SMT波浪焊接—电子制造批量焊接神器
  • 多模态AI:文本、图像、声音如何真正实现“1+1>2”