单链表及双链表

链表

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

双链表 应用:优化某些题

1.单链表:
//说实话,这个真的不难,前提是想好插入和删除一条链的方法

用数组模拟:
1.定义每个节点的val

e[n]定义当前点
ne[n] 定义下一个节点的位置

空节点下标用-1表示

image

#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]<<" ";
posted @ 2021-08-07 10:12  RevolutionBP  阅读(45)  评论(0编辑  收藏  举报