AcWing 826. 单链表
原题链接
简单
作者:
satabase
,
2024-04-16 11:44:07
,
所有人可见
,
阅读 7
#include<iostream>
#include<string>
using namespace std;
const int N = 1e5+10;
int e[N],ne[N],head,idx;
void init(){
head=-1;
idx=0;
}
void in_to_head(int x){
e[idx]=x;
ne[idx]=head;
head=idx;
idx+=1;
}
void add(int k,int x){
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx;
idx+=1;
}
void remove(int k)
{
ne[k]=ne[ne[k]];
}
int main(){
int m;
cin>>m;
string str;
init();
while(m--){
cin>>str;
//cout<<str[0];
if(str[0]=='H'){
int x;
cin>>x;
//cout<<x;
in_to_head(x);
// cout<<head;
}else if(str[0]=='D'){
int k;
cin>>k;
if(k==0)head=ne[head];
else remove(k-1);
}else if(str[0]=='I'){
int k,x;
cin>>k>>x;
add(k-1,x);
//cout<<idx<<' ';
}
}
//cout<<head;
for(int i=head;i!=-1;i=ne[i]){
cout<<e[i]<<' ';
}
return 0;
}