单链表复习(图论准备)
作者:
巷港
,
2022-02-26 17:28:10
,
所有人可见
,
阅读 153
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int e[N],ne[N],head,idx;
void initial(){
head=-1;
idx=0;
}
void add_to_head(int x){
e[idx]=x;
ne[idx]=head;
head=idx++;
}
void insert(int k,int x){
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx++;
}
void dele(int k){
ne[k]=ne[ne[k]];
}
int main(){
int n;
cin>>n;
initial();
while (n--){
int k,x;
char op;
cin>>op;
if (op=='H'){
cin>>x;
add_to_head(x);
}
else if (op=='D'){
cin>>k;
if (!k){
head=ne[head];
}
dele(k-1);
}
else {
cin>>k>>x;
insert(k-1,x);
}
}
for (int i=head;i!=-1;i=ne[i]){ //由于采用的是头插法,head 的初始值是 -1 ,插入的第一个节点最后会变成最后一个节点
cout<<e[i]<<" ";
}
cout<<endl;
return 0;
}