链表

单链表 多个单链表构成邻接表 :应用:存储图,存储树

双链表 应用:优化某些题

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<</iostream>