标签:pre init tle ring blank head 指针 初始 cout
https://www.acwing.com/solution/content/3472/
单链表
#include<iostream> using namespace std; const int N=1e6+10; // e[N]中存value,ne[N]存下一个结点的下标 int head,e[N],ne[N],idx,a; void init()//初始化 { head=-1,idx=0; } void insert(int a)//头插 { //帮助理解,head是一个指针,指向头节点的下一个节点; e[idx]=a,ne[idx]=head,head=idx++; } //插在下标为k的后面. void add(int k,int x) { e[idx]=x,ne[idx]=ne[k],ne[k]=idx++; } void remove(int k) { ne[k]=ne[ne[k]]; } int main() { init(); cin>>a; while(a--) { string 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; insert(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<<e[i]<<" "; return 0; }
标签:pre init tle ring blank head 指针 初始 cout
原文地址:https://www.cnblogs.com/chouhui/p/14323118.html