输入样例
10
H 9
I 1 1
D 1
D 0
H 6
I 3 6
I 4 5
I 4 5
I 3 4
D 6
输出样例
6 4 6 5
这个题我使用了数组模拟链表,va数组存第i个插入数字的数值,inext数组存第i个插入的数字的下一个数字所在的下标。其中inext[0]存储第一个链表首元素所在下标。
#include<bits/stdc++.h>
using namespace std;
const int N=100000+5;
int va[N];
int inext[N];
int main(){
int index=1;
inext[0]=-1;
int m;
scanf("%d",&m);
char c;
while(m--){
cin>>c;
int x,k;
if(c=='H'){
scanf("%d",&x);
va[index]=x;
inext[index]=inext[0];
inext[0]=index++;
}
else if(c=='D'){
scanf("%d",&k);
int dd=inext[k];
inext[k]=inext[dd];
}
else if(c=='I'){
scanf("%d%d",&k,&x);
va[index]=x;
inext[index]=inext[k];
inext[k]=index;
index++;
}
}
int ex=inext[0];
while(ex!=-1){
cout<<va[ex]<<" ";
ex=inext[ex];
}
return 0;
}