技术不好,可能不是太容易看
本题解题思路是将链表按照先来后到的顺序依次插入到动态数组之中
之后遍历动态数组进行输出操作
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
typedef pair<string, int> PSI;
vector<PSI> list1, list2;
const int N = 100010;
bool st[N];
string ne[N], h;
int n, e[N];
int main()
{
cin >> h >> n;
for(int i = 1; i <= n; i ++)
{
string a; cin >> a;
int t = stoi(a);
cin >> e[t] >> ne[t];
}
for(string i = h; i != "-1"; i = ne[stoi(i)])
{
int t = stoi(i);
int p = abs(e[t]);
if(!st[p])
{
st[p] = true;
list1.push_back({i, e[t]});
}
else
{
list2.push_back({i, e[t]});
}
}
list1.push_back({"-1", -1});list2.push_back({"-1", -1});
int n = list1.size() - 1;
for(int i = 0; i < n; i ++)
{
cout << list1[i].first << " " << list1[i].second <<" " << list1[i + 1].first << endl;
}
n = list2.size() - 1;
for(int i = 0; i < n; i ++)
{
cout << list2[i].first << " " << list2[i].second << " " <<list2[i + 1].first << endl;
}
}