数据结构(一)单链表123456789101112131415161718192021222324const int N=1e5+10;int head,e[N],ne[N],idx;//head表示头结点的指针,ne[]里记录下标void init(){ head=-1; idx=0;}void insert_head(int x)//链表头插入{ e[idx]=x; ne[idx]=head; head=idx; idx++;}void insert_k(int k,int x)//第k个元素之后插入{ e[idx]=x; ne[idx]=ne[k]; ne[k]=idx; idx++;} 双链表12345678910111213141516171819202122const int N=1e5+10;int l[N],r[N],e[N],idx;//偷懒一点,直接把编号0的节点作为头节点,编号为1的节点作为尾节点void init(){ r[0]=1,l[1]=0; idx=2;//第k个插入的数下标为k+1}void insert(int k,int x){ e[idx]=x; r[idx]=r[k]; l[idx]=k; l[r[idx]]=idx; r[k]=idx; idx++;}void remove(int k)//删除第k个结点{ r[l[k]]=r[k]; l[r[k]]=l[k];}