单链表遍历: 登录后复制 for(int i=head;i!=-1;i=ne[i])cout<<e[i]; 1. 在删除节点的时候,需要判断这个节点是否是头结点,删除头结点,即把head指向ne[head] 登录后复制 head=ne[head]; 1. 登录后复制 #include<iostream> using namespace std; const int N=100010; int idx,head,n[N],ne[N]; int a; void init(){ head=-1; idx=0; } void add_head(int x){ n[idx]=x; ne[idx]=head; head=idx; idx++; } void add(int k,int x){ n[idx]=x; ne[idx]=ne[k]; ne[k]=idx; idx++; } void remove(int k){ ne[k]=ne[ne[k]]; } int main(){ init(); cin>>a; while(a--){ char op; int k,x; cin>>op; if(op=='D'){ cin>>k; if(!k)head=ne[head]; remove(k-1); }else if(op=='H'){ cin>>x; add_head(x); }else if(op=='I'){ int k,x; cin>>k>>x; add(k-1,x); } } for(int i=head;i!=-1;i=ne[i])cout<<n[i]<<" "; return 0; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11813096