天梯賽 L3 重排連結串列
阿新 • • 發佈:2019-02-09
思路:先根據題目資訊找到原始連結串列,然後根據規則重排
#include <bits/stdc++.h> using namespace std; int head; int data[100010],nex[100010]; int main(){ int n; cin >> head >> n; for(int i = 0;i < n;i++){ int h,d,ne; cin >> h >> d >> ne; data[h] = d; nex[h] = ne; } vector<int> v,re; int now = head; while(now != -1){ v.push_back(now); now = nex[now]; } int i = 0,j = v.size() - 1; while(i <= j){ re.push_back(v[j--]); if(i > j) continue; re.push_back(v[i++]); } for(int i = 0;i < re.size() - 1;i++){ printf("%05d %d %05d\n",re[i],data[re[i]],re[i + 1]); } int in = re.size() - 1; printf("%05d %d %d\n",re[in],data[re[in]],-1); return 0; }