静态单链表的实现:
开一个n数组存储我们的数据域,开一个ne数组储存我们的指针域(形式上)。idex表示当前操作位置。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int head,idex, n[N],ne[N];
void init(){
head=-1;
idex=0;
}
void add_head(int x){
n[idex]=x;
ne[idex]=head;
head=idex++;
}
void add(int k,int x){
n[idex]=x;
ne[idex]=ne[k];
ne[k]=idex++;
}
void delet(int k){
ne[k]=ne[ne[k]];
}
int main(void){
int num;
std::cin>>num;
init();
while(num--){
int k,x;
char a;
std::cin>>a;
if(a=='H'){
std::cin>>x;
add_head(x);
}
else if(a=='D'){
std::cin>>k;
if(!k)head=ne[head];
else
delet(k-1);
}
else{
std::cin>>k>>x;
add(k-1,x);
}
}
for(int i=head;i!=-1;i=ne[i])std::cout<<n[i]<<" ";
return 0;
}
之所以用std::是因为我觉得帅,hhh。