打了半天函数,愣是没发现那里指针错了```cpp #include<bits/stdc++.h> using namespace std;
struct node{ int st=1; int num; node* pre=NULL; node* nxt=NULL; };
node head; int in;
void ins_left(node* ndi,node *ndo){ ndo->pre=ndi->pre; ndo->pre->nxt=ndo; ndi->pre=ndo; ndo->nxt=ndi; }
void ins_right(node* ndi,node *ndo){ ndo->nxt=ndi->nxt; ndi->nxt->pre=ndo; ndi->nxt=ndo; ndo->pre=ndi; }
int del(node *nd){ if(nd->st==0){ return -1; } nd->pre->nxt=nd->nxt; nd->nxt->pre=nd->pre; nd->st=0; return 0; }
node* search_num(int snum){ node* nd=&head; for(;nd->num!=snum;nd=nd->nxt){ nd=nd->nxt; } return nd; }
int k,p,m,tmp;
int main(){ head.num=1; cin>>in; for(int i=1;i<in;i++){ cin>>k>>p; node* now=search_num(k); if(p==0){ node* ins=new node; ins_left(now,ins); }else{ node* ins=new node; ins_right(now,ins); } }
cin>>m;
for(int i=0;i<m;i++){
cin>>tmp;
del(search_num(tmp));
}
for(node* pr=&head;pr->nxt!=NULL;pr=pr->nxt){
cout<<pr->num<<" ";
}
return 0;
}