团体天梯练习 L2-022 重排链表
L2-022 重排链表
给定一个单链表
例如:给定
输入格式:
每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数
接下来有
其中
输出格式:
对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。
输入样例:
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个,然后第n-1个...),偶数位是从原始链表的第一个节点开始依次递增的(即第1个,然后是第2个...)。采用一种双指针算法,就可以解决这个问题,假设顺序存储的地址数值一共有
/* 一切都是命运石之门的选择 El Psy Kongroo */
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<cmath>
#include<functional>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<double, double> pdd;
typedef pair<string, int> psi;
typedef __int128 int128;
#define PI acos(-1.0)
#define x first
#define y second
//int dx[4] = {1, -1, 0, 0};
//int dy[4] = {0, 0, 1, -1};
const int inf = 0x3f3f3f3f, mod = 1e9 + 7;
const int N = 1e5 + 10;
int h, e[N], ne[N], idx;
int n, idxs[N], ele[N]; //存储地址 存储元素
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> h >> n;
for(int i = 0; i < n; i ++ ){
int idx, x, nex; cin >> idx >> x >> nex;
e[idx] = x, ne[idx] = nex;
}
int t1 = 0, t2 = 0;
for(int i = h; ~i; i = ne[i]){
idxs[t1 ++ ] = i; //顺序存储地址
ele[t2 ++ ] = e[i]; //顺序存储节点值
}
int cur = 0, l = 0, r = t1 - 1; //l从前往后 r从后往前
while(t1 -- ){
cur ++ ;
if(cur & 1){ //奇数 从后往前
if(t1 == 0) printf("%05d %d -1\n", idxs[r], ele[r]);
else{
printf("%05d %d %05d\n", idxs[r], ele[r], idxs[l]);
r -- ;
}
}else{ //偶数 从前往后
if(t1 == 0) printf("%05d %d -1\n", idxs[l], ele[l]);
else{
printf("%05d %d %05d\n", idxs[l], ele[l], idxs[r]);
l ++ ;
}
}
}
return 0;
}
一切都是命运石之门的选择,本文章来源于博客园,作者:MarisaMagic,出处:https://www.cnblogs.com/MarisaMagic/p/17330086.html,未经允许严禁转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具