题意
给定一个链表,去重,要求按原链表中的顺序记录去掉的节点
源码
#include<cstring>
#include<cmath>
#include<iomanip>
using namespace std;
struct Node{
int val;
int next;
};
Node node[100005];
int visit[10005];
int main(){
int start,n;
cin>>start>>n;
memset(visit,0,sizeof(visit));
for(int i=0;i<n;i++){
int x,val,y;
cin>>x>>val>>y;
node[x].val=val;
node[x].next=y;
}
int cur=start;
int moveStart=-1,resStart=-1;
int i,j;
while(1){
if(cur==-1) break;
if(visit[abs(node[cur].val)]!=0){
moved++;
if(moveStart==-1){
moveStart=cur;
j=cur;
}else{
node[j].next=cur;
j=cur;
}
}else{
visit[abs(node[cur].val)]++;
if(resStart==-1){
resStart=cur;
i=cur;
}else{
node[i].next=cur;
i=cur;
}
}
cur=node[cur].next;
}
node[i].next=-1;
i=resStart;
while(i!=-1){
if(node[i].next==-1){
cout<<setfill('0')<<setw(5)<<i<<" "<<node[i].val<<" "<<node[i].next<<endl;
}else{
cout<<setfill('0')<<setw(5)<<i<<" "<<node[i].val<<" "<<setfill('0')<<setw(5)<<node[i].next<<endl;
}
i=node[i].next;
}
node[j].next=-1;
j=moveStart;
while(j!=-1){
if(node[j].next==-1){
cout<<setfill('0')<<setw(5)<<j<<" "<<node[j].val<<" "<<node[j].next<<endl;
}else{
cout<<setfill('0')<<setw(5)<<j<<" "<<node[j].val<<" "<<setfill('0')<<setw(5)<<node[j].next<<endl;
}
j=node[j].next;
}
return 0;
}