题目描述

解题思路
- 无须设计五个方法对应五种操作,将所有插入操作归为一类,删除为一个单独操作即可
代码部分
import java.util.*
public class Main{
public static final int N = 100010
// 三个数组,当前元素、前指针、后指针
public static int [] e = new int[N]
public static int [] l = new int[N]
public static int [] r = new int[N]
// 下一个可用的索引
public static int idx = 2
public static void main(String [] args){
l[1] = 0
Scanner sc = new Scanner(System.in)
int m = sc.nextInt()
for(int i = 0
String s = sc.next()
char c = s.charAt(0)
int x, k
// 判断是哪种操作
if(c == 'L'){
x = sc.nextInt()
insert(0, x)
}else if(c == 'R'){
x = sc.nextInt()
insert(l[1], x)
}else if(c == 'D'){
k = sc.nextInt()
remove(k + 1)
}else if(s.charAt(1) == 'L'){
k = sc.nextInt()
x = sc.nextInt()
insert(l[k + 1], x)
}else{
k = sc.nextInt()
x = sc.nextInt()
insert(k + 1, x)
}
}
for(int i = r[0]
System.out.print(e[i] + " ")
}
}
// 删除
public static void remove(int k){
r[l[k]] = r[k]
l[r[k]] = l[k]
}
// 插入
public static void insert(int k, int x){
e[idx] = x
r[idx] = r[k]
l[idx] = k
l[r[k]] = idx
r[k] = idx
idx++
}
}