Acwing 826. 单链表(数组模拟链表的基本操作)
地址:https://www.acwing.com/problem/content/828/
我的单链表笔记:https://www.cnblogs.com/liyexin/p/13954747.html
基本板子,只是这里注意一下,因为我这里的idx是从0开始,所以对题中的k来讲,k-1才行
#include<cstdio> #include<cstring> #include<vector> #include<set> #include<stack> #include<algorithm> #include<iostream> #include<vector> using namespace std; typedef long long ll; const int maxn=1e5+10,maxn2=31*maxn; int e[maxn],ne[maxn],idx,head; void init() { idx=0; head=-1; } void add_head(int x) { e[idx]=x; ne[idx]=head; head=idx; idx++; } void add(int k,int x) { e[idx]=x; ne[idx]=ne[k]; ne[k]=idx; idx++; } void del(int k) { ne[k]=ne[ne[k]]; } int main() { init(); int n; scanf("%d",&n); while(n--) { char op[13]; scanf("%s",op); if(op[0]=='H') { int x; scanf("%d",&x); add_head(x); } else if(op[0]=='D') { int k; scanf("%d",&k); if(k==0) head=ne[head]; else del(k-1); } else { int k,x; scanf("%d%d",&k,&x); add(k-1,x); } } for(int i=head;i!=-1;i=ne[i]) cout<<e[i]<<" "; cout<<endl; return 0; }