#include <iostream>
using namespace std;
struct Node{
int val;
Node * next;
};//不常用
//new node;//很慢
const int N=100010;
int head,e[N],ne[N],idx; //head表示头节点下标
//e[i]表示节点i的值
//ne[i]表示i的next指针
//idx表示当前已经用到哪个点
void init(){
head=-1;
idx=0;
}//初始化
void add_to_head(int x){
e[idx]=x;
ne[idx]=head;
head=idx;
idx ++;
}//将x插到头结点
void add_to_k(int k,int x){
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx;
idx++;
}//将x插到下标是k的后面
void remove_k(int k){
ne[k]=ne[ne[k]];
}//删除下标是k的后面结点
int main()
{
int m;
cin>>m;
init();
while(m--){
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];
remove_k(k-1);
}
else{
cin>>k>>x;
add_to_k(k-1,x);
}
}
for(int i=head;i!=-1;i=ne[i]) cout << e[i]<<' ';
cout<<endl;
return 0;
}
Acwing 826 单链表
最新推荐文章于 2024-07-25 17:43:13 发布