单链表
作者:
blossomsym
,
2023-04-17 14:00:56
,
所有人可见
,
阅读 138
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#include<unordered_map>
#include<unordered_set>
#define ll long long
#define MAX 100000
#define mod 10000007
using namespace std;
typedef pair<int, int> PII;
const int N = 100005;
int head,idx;
int e[N], ne[N];
void init() {//初始化
head = -1;//head为头节点的下标
idx = 0;
}
void add_to_head(int x) {
e[idx] = x;
ne[idx] = head;
head = idx++;
}
void add(int k, int x) {
//将x插入到第k次插入的节点的后面
e[idx] = x;
ne[idx] = ne[k];
ne[k] = idx++;
}
void move(int k) {
//将第k次插入的节点后面的节点删除
ne[k] = ne[ne[k]];
}
int main() {
int n;
cin >> n;
init();
for(int p=0;p<n;p++) {
char op;
cin >> op;
int x,k;
if (op == 'H') {
cin >> x;
add_to_head(x);
}
else if (op == 'D') {
cin >> k;
if (k == 0) {
head = ne[head];
}else move(k - 1);
}
else {
cin >> k >> x;
add(k-1, x);
}
}
for (auto i = head; i != -1; i = ne[i]) {
cout << e[i] << " ";
}
return 0;
}