#P1023. 【模板】双链表
【模板】双链表
Description
维护一个双链表,双链表初始为空,支持以下五种操作:
1. 在最左侧插入一个整数。
2. 在最右侧插入一个整数。
3. 将第 $k$ 个插入的整数删除。
4. 在第 $k$ 个插入的整数左侧插入一个整数。
5. 在第 $k$ 个插入的整数右侧插入一个整数。
共进行 $m$ 次操作,最后从头到尾输出链表。
注意:第 $k$ 个插入的整数不是链表的第 $k$ 个整数,而是整个过程中第 $k$ 个插入链表的整数。
Input Format
第一行一个整数 $m$ 表示操作次数。
接下来 $m$ 行,每行包含一个操作命令,操作命令可能是以下五种:
$1.$ L x
,表示在链表的最左端插入整数 $x$。
$2.$ R x
,表示在链表的最右端插入整数 $x$。
$3.$ D k
,表示将第 $k$ 个插入的整数删除。
$4.$ IL k x
,表示在第 $k$ 个插入的整数左侧插入一个整数。
$5.$ IR k x
,表示在第 $k$ 个插入的整数右侧插入一个整数。
Output Format
一行若干个整数表示操作结束后,链表从头到尾的整数。10
R 7
D 1
L 3
IL 2 10
D 3
IL 2 7
L 8
R 9
IL 4 7
IR 2 2
8 7 7 3 2 9
Hint
$1≤m≤10^5,1≤x≤10^9$
const int N=1e5+3;
int a[N],l[N],r[N],idx=2;
void init(){
r[0]=1;
l[1]=0;
}
void rinsert(int k,int x){}
void del(int k){}