AcWing 827. 双链表
Posted wisexu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 827. 双链表相关的知识,希望对你有一定的参考价值。
AcWing 827. 双链表
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int e[N],l[N],r[N],idx;
void init(){
//0表示左端点,1表示右端点
r[0]=1;
l[1]=0;
idx=2;
}
//在下标是k的点右边,插入x
void add(int k,int x){
e[idx]=x;
r[idx]=r[k];
l[idx]=k;
l[r[k]]=idx;
r[k]=idx;
idx++;
}
//删除第k个点
void remove(int k){
r[l[k]]=r[k];
l[r[k]]=l[k];
}
int main(){
int m;
cin>>m;
init();
while(m--){
string op;
int k,x;
cin>>op;
if(op=="L"){
scanf("%d",&x);
add(0,x);
}else if(op=="R"){
scanf("%d",&x);
add(l[1],x);
}else if(op=="D"){
scanf("%d",&k);
remove(k+1);
}else if(op=="IL"){
scanf("%d%d",&k,&x);
add(l[k+1],x);
}else if(op=="IR"){
scanf("%d%d",&k,&x);
add(k+1,x);
}
}
for(int i=r[0];i!=1;i=r[i])
printf("%d ",e[i]);
return 0;
}
以上是关于AcWing 827. 双链表的主要内容,如果未能解决你的问题,请参考以下文章