AcWing 826. 单链表
原题链接
简单
作者:
xxxx_XXXXX
,
2021-03-29 19:57:08
,
所有人可见
,
阅读 264
C++ 代码
/*
其实idx就是指插入了多少数字
v[i]顺序的存入 每一个插入的数字(不会删除)
ne[i]存放当前i的next节点 , i的本意就是第i+1个存入的数字的指针
*/
#include<bits/stdc++.h>
using namespace std ;
const int M = 100000 + 100 ;
int v[M] , ne[M] , idx = 0 ;
int n ;
int head = -1 ;
void insert_to_head(int a){
v[idx] =a , ne[idx] = head , head = idx ++ ;
}
void insert_to_k(int k ,int a){
v[idx] =a , ne[idx] = ne[k] , ne[k] = idx ++ ;
}
void del(int k){
ne[k] = ne[ne[k]] ;
}
int main(){
ios::sync_with_stdio(false) ;
head = -1 ;
cin >> n ;
while(n--){
string op ; int a , k ; cin >> op ;
if(op == "H"){cin>>a;insert_to_head(a);}
if(op == "I"){cin>>k>>a;insert_to_k(k-1,a);}
if(op == "D"){
cin>>k;
if(k==0) head = ne[head] ;
else del(k-1);}
}
for(int i = head ; i!=-1 ; i=ne[i]) cout<<v[i]<<" ";
}