首页 > 其他分享 >双链表和循环链表

双链表和循环链表

时间:2024-09-22 18:20:34浏览次数:8  
标签:结点 指向 后继 链表 循环 前驱 双链

线性表的链式和线性存储见前两篇文章

一、双链表

1.定义:

在线性表的链式存储结构中,每个物理结点增加一个指向后继结点的指针域和一个指向前驱结点的指针域

2.优点:

(1)从任一结点出发可以快速找到其前驱结点和后继结点

(2)从任一结点出发可以访问其他结点

注意:双链表的密度比单链表小

3.双链表结点定义:
typedef struct DNode
{
    ElemType data;

    struct DNode *prior;    //指向前驱的结点

    struct DNode *next;    //指向后继的结点
   
} DLNode,*DLinkedList;
4.插入结点

理解:

(1)s的后继结点指向p的下一个结点(b)的地址

(2)p的下一个结点(b)的前驱指向s

以此类推....

5.删除结点

6.整体建立双链表
(1)头插法

(2)尾插法

(3)插入

(4)删除

二、循环链表

1.循环单链表:

将表中尾结点的指针域改为指向表头结点,整个链表形成一个环。由此表任一结点出发均可找到链表中其他结点。

2.循环双链表:

形成两个环

标签:结点,指向,后继,链表,循环,前驱,双链
From: https://blog.csdn.net/2301_80320259/article/details/142440433

相关文章

  • Spring 的循环依赖
    在Spring中,循环依赖是指两个或多个Bean相互依赖,导致在创建过程中出现了依赖死锁的问题。为了解决循环依赖,Spring引入了三级缓存机制。了解为什么需要三级缓存机制,首先要明白循环依赖是如何发生的,以及两级缓存为什么不足够。一、循环依赖是什么?假设有两个BeanA和B:A......
  • 【编程底层原理】彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的(一级缓存为
    一、整体推导思路为了彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的,要么去找三级缓存的设计者了解其设计的初衷,要么利用反推法来进行倒推(即一级缓存为啥不行,二级缓存为啥也不合适)。为了让大家能有一个更清晰的理解脉路,下面将先从反推法来介绍下一级缓存为啥不......
  • 移除链表元素
    移除链表元素思路:1.首先判断链表是否为空,若为空直接返回head(null)2.若链表不为空,让prev记住要删除节点的前一个位置,cur指向要删除的元素位置,若cur指向的val==要删除的值,就让prev.next指向cur.next3.因为cur是从head的下一个节点位置开始判断的,就没有判断头节点是否为要......
  • 链表的中间结点
    链表的中间结点思路1:1.若链表为空,直接返回null2.若链表不为空,我们可以先求的链表的长度,让得到的链表长度/2,再让ListNodecur=head,cur走上链表长度/2次,就可以返回中间节点了publicintsize(ListNodehead){if(head==null){return0;......
  • Python基于TensorFlow实现时间序列循环神经网络回归模型(LSTM时间序列回归算法)项目实
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景随着信息技术的发展和传感器设备的广泛应用,时间序列数据的产生量急剧增加。无论是股市价格的波动、电力消耗的趋势还是环境监测的数据变化,准确地预......
  • 视频号直播自动循环发评论-自动回复评论 - 浏览器插件
    功能介绍浏览器插件源码开放,可以随意二次开发,无时间限制,无账号限制,无电脑限制实现原理,纯浏览器插件实现,监控浏览器界面元素变动,获取直播间或者直播中控后台的评论文本,匹配回复关键词或调用AI接口,再利用js模拟输入和点击等操作支持以下中控台或直播间地址,获取评论与回复评论抖......
  • 代码日数:高级循环
    2024年8月30日星期五我目前正在学习codecademy全栈工程师路径的第二门课程。我最近完成了javascript语法i课程,并完成了javascript语法ii中的数组和循环作业。接下来是对象、迭代器、错误和调试、练习以及三个挑战项目。今天的主要亮点是学习对我来说全新的循环,即f......
  • 事件循环如何处理微任务和宏任务
    在javascript中,微任务和宏任务是事件循环管理的两种类型的异步任务,但它们的处理方式不同。了解它们的工作原理对于预测异步代码的执行顺序至关重要。1.宏任务队列(任务队列)宏任务被放入自己的队列中,通常称为任务队列或宏任务队列。宏任务的示例包括:settimeout、setinterval......
  • 双链表定义与操作
    双链表的定义 与单链表不同的地方在于指针,双链表的指针多了个前向指针。点击查看代码typedefstructDNode{ ElemTypedata; DNode*prior,*next;}*DLinkList,DNode;双链表的初始化(initial) 双链表的创建也可分为带头节点和不带头节点(这里只放了不带头的初始化)。......
  • 链表(3)链表的基本操作
            单链表的基本操作主要有;①创建链表;②输出链表;③査我结点;④插入结点,⑤鹏除结点;⑥重组链表。下面分别进行介绍。一.创建链表        创建链表是指在程序运行时,进行动态内存分配,创建若千个结点,并把这些结点连接成串,形成一个链表。在进行动态......