免费建立网站教程/数字营销策略有哪些
题目
来源
826. 单链表 - AcWing题库
思路
详见代码,主要思想就是用数组来模拟链表的创建。数组其实跟静态链表等价,由于动态链表动态new对于大数据太过于耗时,因此采用数组的方式。那数组如何起到链表的效果?用下标来索引。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int head,e[N],ne[N],idx;
//初始化
void init(){head=-1;idx=0;
}
//插入到头结点之后(把新的点插到头结点的位置80%)
void add2head(int x){e[idx]=x;ne[idx]=head; //第一步head=idx; //第二步idx++;
}
//将节点插入到下标是K的后面
void add2k(int k,int x){e[idx]=x;ne[idx]=ne[k]; //第一步ne[k]=idx; //第二步idx++;
}
//将下标是K的点删掉
void del2k(int k){ne[k]=ne[ne[k]];
}int main(){int n;cin>>n;init();while(n--){char op;int x,k;cin>>op;if(op=='H'){cin>>x;add2head(x);}else if(op=='D'){cin>>k;if(k==0)head=ne[head];//k=0,删除头结点,相当于将head指向head下下个点del2k(k-1); //因为0号点是第一个插入的点}else if(op=='I'){cin>>k>>x;add2k(k-1,x);//因为0号点是第一个插入的点}}for(int i=head;i!=-1;i=ne[i]){cout<<e[i]<<" ";}cout<<endl;return 0;
}