AcWing 826. 单链表
原题链接
简单
作者:
理想二旬.
,
2021-05-07 10:53:35
,
所有人可见
,
阅读 189
C++ 代码
import java.util.Scanner;
import java.io.BufferedInputStream;
class Main{
private static int N = 100010;
private static int head;
private static int[] e = new int[N];
private static int[] ne = new int[N];
private static int idx;
//初始化
//head是一个指针
//idx表示索引
private static void init() {
head = -1; // 没有头结点
idx = 0; // 没有存入数据
}
//向链表头插入一个数
public static void insertHead(int x){
e[idx] = x;
ne[idx] = head;
head = idx;
idx ++;
}
//删除第k个插入的数的后面的数
public static void delete(int k){
ne[k] = ne[ne[k]];
}
//在第 k 个插入的数后插入一个数
public static void insertK(int k, int val){
e[idx] = val;
ne[idx] = ne[k];
ne[k] = idx;
idx++;
}
public static void main(String[] args){
init();
Scanner in = new Scanner(new BufferedInputStream(System.in));
int q = in.nextInt();
while(q -- > 0){
String m = in.next();
if(m.equals("H"))
insertHead(in.nextInt());
else if(m.equals("I"))
//第一个插入的数下标是0,所以第n个插入的数下标应该是n - 1
insertK(in.nextInt() - 1, in.nextInt());
else{
int k = in.nextInt();
if(k == 0)
head = ne[head];
else
delete(k - 1);
}
}
int i = head;
while(i != -1){
System.out.print(e[i] + " ");
i = ne[i];
}
}
}