首页 > 其他 > 详细

单链表及双链表

时间:2021-08-07 14:59:33      阅读:15      评论:0      收藏:0      [点我收藏+]

链表

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

双链表 应用:优化某些题

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>

单链表及双链表

原文:https://www.cnblogs.com/RevolutionBP/p/15111156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!