单链表遍历:
for(int i=head;i!=-1;i=ne[i])cout<在删除节点的时候,需要判断这个节点是否是头结点,删除头结点,即把head指向ne[head]
head=ne[head];
#includeusing 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<



