首页 > 其他分享 >灯塔--链表的学习

灯塔--链表的学习

时间:2023-10-25 11:07:11浏览次数:30  
标签:NULL return -- next 链表 prior 双链 灯塔 DNode


双链表

双链表的存储结构

typedef struct DNode{	//定义双链表的节点类型
	ElemType data;		//数据域
	struct DNode *prior,*next;
}DNode,*DLinkList;

灯塔--链表的学习_网络

双链表的初始化

bool InitDLinkList(DLinkList &L){
    DNode p=(DNode *)malloc(sizeof(DNode));
    if(L==NULL)
        return false;
    p->prior=NULL; //头结点的prior永远指向NULL
    p->next=NULL;
    return true;
}

void testDLinkList(){
	DLinkList L;
    InitDLinkList(L);
}

双链表的插入

bool InsertNextDNode(DNode *p,DNode *s){
    if(p==NULL||s==NULL)
        return false;
    s->next=p-next;
    if(p->next!=NULL)
        p->next->prior=s;
    s->prior=p;
    p->next=s;
    return true;
}

双链表的删除

bool DeleteNextDNode(DNode *p){
    if(p==NULL)
        return false;
    DNode *q=p->next;
    if(q==NULL)
        return false;
    p->next=q->next;
    if(q->next!=NULL)
        q->next->prior=p;
    free(q);
    return true;
}

双链表的遍历

后向遍历和前向遍历

循环单链表

bool InitList(LinkList &L){
      if(L==NULL)
          return false;
      L->next=L;
      return true;
  }

循环双链表

bool InitDLinkList(DLinkList &L){
    L=(DNode *)malloc(sizeof(DNode));
    if(L==NULL)
        return false;
    L->next=L;
    L->prior=L;
    return true;
}
bool InsertNextDNode(DNode *p,DNode *s){
	s->next=p->next;
    p->next->prior=s;
    s->prior=p;
    p->next=s;
}
p->next=q->next;
q->next->prior=p;
free(q);


标签:NULL,return,--,next,链表,prior,双链,灯塔,DNode
From: https://blog.51cto.com/u_15847558/8015464

相关文章

  • 基于redis实现防重提交
    自定义防重提交1.自定义注解importjava.lang.annotation.*;/***自定义防重提交*@author*@date2023年9月6日11:19:13*/@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceRepeatSubmit{/***默认防......
  • ECharts
    ECharts简介ECharts是使用JavaScript实现的一个开源可视化库.Echarts的引入通过官网下载echarts的js文件通过npm或者cnpm下载,下载后这样使用:varecharts=request('echarts');ECharts的基本使用步骤一:下载并引入ECharts.js文件------->图表依赖于这个js文件步骤二:......
  • 外贸网站建设?有哪些建站平台
    外贸业务越来越重要,特别是在全球化进程中,越来越多的企业开始将其重心移至海外市场。建立一个高质量的外贸网站对于任何成功的海外企业而言都是至关重要的。然而,对于小企业来说,建立一个专业的外贸网站可能需要相当高的成本。但是,现在有许多免费外贸网站建设平台可供选择,这让建立一个......
  • MongoDB常用脚本汇总
    概述本文汇总记录日常工作中常用的MongoDB查询脚本。实战新增新增集合:db.getSiblingDB("corpus").createCollection('message');删除删除一条数据:db.getSiblingDB("cx_user").userAccount.deleteOne({_id:ObjectId('628720aa454b9b0008ca218f')});批量删除多条数据:db.getSiblin......
  • win10_Git基于WSL(Linux子系统)统计代码行数命令
    win10_Git基于WSL(Linux子系统)统计代码行数命令一、引言找到的基于git统计代码行数的命令,一般都是基于linux系统的shell命令。在使用mac电脑或者linux系统开发时,执行这些命令比较方便。但是还有大部分人是使用windows做开发,这时就遇到麻烦了,因为基于shell的统计命令不能在windows系......
  • 用git stash暂存修改
    gitstash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后,可以再回到之前的状态,继续之前的开发。使用场景切换分支:当你正在开发一个功......
  • 简单了解一下:Node的util工具模块
    了解util模块,知道怎么使用util来格式化字符串,把对象转化为字符串,检查对象类型。那么util模块有哪些方法呢?如下图所示:常用的几个方法:格式化输出字符串util提供的格式化方法为:format(),语法如下:util.format(format,[...])format参数,是包含0个或者多个占位符的字符串,每一个占位符是......
  • OKR工作法阅读总结
    虽然OKR工作法的妙处在于帮助团队达成目标、激发团队潜能,但在我看来这套方法同样适用于“促进个人工作和学习目标的完成”。什么是OKR,步骤,关键点O表示目标(Objective),KR表示关键结果(KeyResults)。目标就是你想做什么事情(比如,上线一款游戏),关键结果就是如何确认你做到了这件事(比......
  • 如何使用DiskGenius恢复硬盘数据?
    硬盘数据丢失了怎么办?硬盘丢失数据的问题很常见,遇到了也不要慌张,因为有办法解决。作为普通用户也一样可以自己找回丢失的数据。今天,小编就和大家一起了解一下,如何使用恢复工具找到丢失的硬盘数据。DiskGenius是一款功能强大的数据恢复软件,它采用了最新的扫描算法和底层读取磁盘扇区......
  • 赛博朋克元素——斜拉桥智慧施工数字孪生
    斜拉桥(又称斜张桥),作为现代桥梁工程中的一种重要类型,代表了现代工程技术的高度成就,在全球范围内已得到广泛的应用。斜拉桥采用了高强度的材料和精密的建筑技术,能够跨越宽阔的河流、峡谷和深渊。在新基建计划中,斜拉桥成为城市交通的关键纽带,在城市发展、交通改善、科技创新和可持续发......