L2-022 重排链表(团体程序设计天梯赛-练习集)

link

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100010;

struct Node{
	int begin, val, next;
}node[MAXN];

int nbegin, n;
vector<Node> ans, tmp;

int main(){
	scanf("%d%d", &nbegin, &n);
	
	for(int i = 1; i <= n; i++){
		int begin, data, next;
		cin >> begin >> data >> next;
		node[begin] = {begin, data, next};
	}	
	
	while(nbegin != -1){
		tmp.push_back(node[nbegin]);
		nbegin = node[nbegin].next;
	}
		
	int l = 0, r = tmp.size() - 1;	
	
	while(1){
		ans.push_back(tmp[r]);
		r--;
		if(r - l == -1) break;
		ans.push_back(tmp[l]);
		l++;
		if(r - l == -1) break;
	}
	
	for(int i = 0; i < ans.size(); i++){
		if(i != ans.size() - 1)
			printf("%05d %d %05d\n", ans[i].begin, ans[i].val, ans[i + 1].begin);
			
		else{
			printf("%05d %d %d\n", ans[i].begin, ans[i].val, -1);
		}
	}
	return 0;
}
posted @ 2025-03-06 19:18  awei040519  阅读(17)  评论(0)    收藏  举报