本文最后更新于-1天前,其中的信息可能已经过时,如有错误请发送邮件到2392862431@qq.com
本质:
双链表同单链表原理几乎一致,只是双链表的指针选项为两项,l[i]和r[i],但其中的本质几乎不变,操作思想不变。
其中用0表示头节点坐标,1表示结尾结点坐标

实现部分:
1、在结点a的右边插入一个数x
void insert(int a,int x)
{
e[idx]=x;
r[idx]=r[a];
l[r[a]]=idx;
l[idx]=a;
r[a]=idx++;
}
2、删除结点a
void remove(int a)
{
l[r[a]]=l[a];
r[l[a]]=r[a];
}
代码实现:
#include <iostream>
using namespace std;
const int N=100010;
int m,e[N],l[N],r[N],idx;
int main()
{
cin>>m;
r[0]=1;
l[1]=0;
while(m--)
{
string op;
cin>>op;
int k,x;
if(op=="L")
{
cin>>x;
insert(0,x);
}
else if(op=="R")
{
cin>>x;
insert(l[1],x);
}
else if(op=="IL")
{
cin>>K>>x;
insert(l[k+1],x);
}
else{
cin>>k>>x;
insert(k+1,x);
}
}
for(int i-0;i!=1;i=r[i])
{
cout<<e[i]<<' ';
}
cout<<endl;
return 0;
}









