#include <cstddef> #include <iostream> using namespace std; struct Node{ int val; Node *next; }; int main() { int n,h,k;cin>>n>>h; Node *head = new Node; Node *p= new Node; head->val = h; head->next = nullptr; int pre,idx; n--; while(n--){ cin>>idx>>pre; Node *q = new Node(); q->val = idx; for(p = head;p!=nullptr;p = p->next){ if(p->val==pre){ q->next = p->next; p->next = q; } } } cin>>k; if(head->val==k){ head = head->next; } for(p = head;p!=nullptr;p = p->next){ if(p->next->val==k){ p->next = p->next->next; break; } } for(p=head;p!=nullptr;p=p->next){ cout<<p->val<<' '; } return 0; } // 64 位输出请用 printf("%lld")
思路不难,但是可能会遇到空指针错误,在20行,原来是直接new Node,后来改为new Node();之后就可以了,也不知道是为什么,求大佬解答。