单链表及双链表
链表
单链表 多个单链表构成邻接表 :应用:存储图,存储树
双链表 应用:优化某些题
1.单链表:
//说实话,这个真的不难,前提是想好插入和删除一条链的方法
用数组模拟:
1.定义每个节点的val
e[n]定义当前点
ne[n] 定义下一个节点的位置
空节点下标用-1表示
#include<iostream>
using namespace std;
const int N=100010;
//head 表示头结点的下标
//e[i] 表示节点i的值
//ne[i] 表示节点i的next指针是多少
//idx存储当前已经用到了哪个点
void init(){
head=-1;
idx=0;
}
void add_to_head(int x){
e[idx]=x;
ne[idx]=head;
head=idx++;
}
//将x插到头节点
void add(int x,int k){
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx++;
}
//将x插到k的后面
void remove(int k){
ne[k]=ne[ne[k]];
}
//删除k后面的数
int main(){
int m;
cin>>m;
while(m--){
char op;
int k,x;
cin>>op;
if(op=='H') cin>>x,add_to_head(x);
else
if(op=='D') cin>>k,remove(k);
else cin>>k>>x,add(k,x);
}
for(int i=head&&i!=-1;i=ne[i]) cout<<e[i]<<" ";