AcWing 826. 单链表
原题链接
简单
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int idx,e[N],ne[N],head;//idx表示地址,e[]表示当前元素,ne[]表示下个元素的地址,head表示头指针
void add_to_head(int x){//将元素插入头节点
e[idx]=x;
ne[idx]=head;
head=idx++;
}
void add(int k,int x){//将元素插入k-1后
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx++;
}
void remove(int k){//删除k-1前的节点
ne[k]=ne[ne[k]];
}
void init(){
head=-1;
idx=0;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int m;
cin>>m;
init();
while(m--){
char a;
cin>>a;
if(a=='H'){
int x;
cin>>x;
add_to_head(x);
}else if(a=='D'){
int k;
cin>>k;
if(!k)head=ne[head];
remove(k-1);
}
else{
int x,k;
cin>>k>>x;
add(k-1,x);
}
}
for(int i=head;i!=-1;i=ne[i])cout<<e[i]<<' ';
return 0;
}