AcWing 826. 单链表
原题链接
简单
作者:
LangB
,
2020-11-10 02:08:22
,
所有人可见
,
阅读 304
import java.util.*;
public class Main {
static final int N = 100010;
static final int[] e = new int[N], ne = new int[N];
static int head = -1, idx = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int M = scanner.nextInt();
while (M-- > 0) {
String op = scanner.next();
if ("H".equals(op)) {
int num = scanner.nextInt();
insertHead(num);
} else if ("D".equals(op)) {
int num = scanner.nextInt();
if (num == 0) {
head = ne[head];
} else {
remove(num - 1);
}
} else {
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
insert(num1 - 1, num2);
}
}
for (int i = head; i != -1; i = ne[i]) {
System.out.printf("%d ", e[i]);
}
}
public static void insertHead(int num) {
e[idx] = num;
ne[idx] = head;
head = idx++;
}
public static void insert(int k, int num) {
e[idx] = num;
ne[idx] = ne[k];
ne[k] = idx++;
}
public static void remove(int k) {
ne[k] = ne[ne[k]];
}
}