tips:
1.数组模拟单链表,快
2.一些边界条件的考虑出题人已经除去了
3.题意的理解
4.下标用来索引,指针,逻辑与物理的区别
#include<iostream> using namespace std; const int N=10010; int head,e[N],ne[N],idx; void init(){ head=-1; idx=0; } void add_to_head(int x){ e[idx]=x; ne[idx]=head; head=idx; idx++; } void add(int k,int x){ e[idx]=x; ne[idx]=ne[k]; ne[k]=idx; idx++; } void rremove(int k){ ne[k]=ne[ne[k]]; } int main(){ int m; cin>> m; init(); while(m--){ int k,x; char op; inc>>op; if(op == 'H'){ cin>>x; add_to_head(); } else if(op == 'D'){ cin>>k; if(!k) head=ne[head]; rremove(k-1); } else{ cin>>k>>x; add(k-1,x); } } for(int i=head; i!=-1; i=ne[i]) cout<<e[i]<<' '; cout<<endl; return 0; }View Code