链表题,每次都是一个套路。。
#include<bits/stdc++.h>
using namespace std;
struct node{
int add;
int data;
int next;
}linklist[100000];
int main(){
int add,n,k;
cin>>add>>n>>k;
int step,num,temp;
for(int i=0;i<n;i++){
cin>>step>>num>>temp;
linklist[step].add=step;
linklist[step].data=num;
linklist[step].next=temp;
}
vector<node> f,s,t;
while(1){
if(add==-1)break;
if(linklist[add].data<0)f.push_back(linklist[add]);
if(linklist[add].data>=0&&linklist[add].data<=k)s.push_back(linklist[add]);
if(linklist[add].data>k)t.push_back(linklist[add]);
add=linklist[add].next;
} //printf("h");
for(int i=0;i<s.size();i++){
f.push_back(s[i]);
}
for(int i=0;i<t.size();i++){
f.push_back(t[i]);
}
for(int i=0;i<f.size();i++){
if(i==f.size()-1)printf("%05d %d -1\n",f[i].add,f[i].data);
else printf("%05d %d %05d\n",f[i].add,f[i].data,f[i+1].add);
}
return 0;
}