1.在头结点处插入一个元素
1>>初始化
//ne数组表示的是下一个节点,e数组表示的是当前节点的值
int ne[N],e[N],head=-1,idx=0;
2>>插入
//在头节点处插入X
void start(int x){e[idx]=x;ne[idx]=head;head=idx;idx++;
}
2.删除第K个元素
//删除第K个元素
void delet(int k){ne[k]=ne[ne[k]];
}
3.在第K个位置插入X
//在第K个位置插入X
void insert(int k,int x){e[idx]=x;ne[idx]=ne[k];ne[k]=idx;idx++;
}
4.输出链表元素:
//输出链表元素for(int i=head;i!=-1;i=ne[i]){cout<<e[i]<<" ";}
例题:
AC代码:
#include<iostream>
using namespace std;
const int N=100009;
//ne数组表示的是下一个节点,e数组表示的是当前节点的值
int ne[N],e[N],head=-1,idx=0;
//在头节点处插入X
void start(int x){e[idx]=x;ne[idx]=head;head=idx;idx++;
}
//删除第K个元素
void delet(int k){ne[k]=ne[ne[k]];
}
//在第K个位置插入X
void insert(int k,int x){e[idx]=x;ne[idx]=ne[k];ne[k]=idx;idx++;
}
int main(){int n;cin>>n;while(n--){char a;cin>>a;if(a=='H'){int b;cin>>b;start(b);}else if(a=='I'){int b,c;cin>>b>>c;insert(b-1,c);}else {int b;cin>>b;if(!b) head=ne[head];//特判一下,假如删除的是头节点//那么head需要指向头结点的下一个节点delet(b-1);}}//输出链表元素for(int i=head;i!=-1;i=ne[i]){cout<<e[i]<<" ";}return 0;
}