循环链表算法及代码实现

2023-11-12

一、循环单链表:

        直接上图就能够说明循环单链表的存储结构,简单直观。

我们关注一下其特点,与非循环单链表相比,循环单链表:

1、无空指针域

2、尾节点的判断条件为:p->next==L; 

二、循环双链表:

同样直接上图:

与非循环双链表相比:

1、无空指针域

2、尾节点的判断条件为:p->next==L;

3、可以直接找到尾节点:L->prior 

三、代码实现:

        事实上,实现循环链表的方法有很多,这里介绍一种学校老师教授的十分简单的构建方法。下面只写出核心代码,其余的根据各位自己的需要自行书写。

1、循环单链表

#if
    p->next=L->next;//头插法建表
#end if
    p->next=L;//尾插法建表

    p->next->next=p;//不论是头插法还是尾插法都需要有这一行代码

2、循环双链表

#if
    p->next=L->next;//头插法建表
    p->prior=L;
#end if
    
    p->next=L;//尾插法建表
    p->prior=L->prior;
    
    p->next->prior=p;//这两句是一定存在的,不论是头插法还是尾插法
    p->prior->next=p;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环链表算法及代码实现 的相关文章

  • Java语言通过三种方法来实现队列

    队列 关于作者 作者介绍 博客主页 作者主页 简介 JAVA领域优质创作者 一名在校大三学生 在校期间参加各种省赛 国赛 斩获一系列荣誉 关注我 关注我学习资料 文档下载统统都有 每日定时更新文章 励志做一名JAVA资深程序猿 文章目录 队
  • LeetCode83: 删除排序链表中的重复元素

    给定一个已排序的链表的头 head 删除所有重复的元素 使每个元素只出现一次 返回 已排序的链表 示例 1 输入 head 1 1 2 输出 1 2 示例 2 输入 head 1 1 2 3 3 输出 1 2 3 提示 链表中节点数目在范围
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • 一文弄懂循环链表、双向链表、静态链表

    循环链表 双向链表 静态链表 三遍定律 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 理解了单链表本文的理解易如反掌 单链表请点击这里 1 循环链表 将单链表中终端结点的指针端由空指针改
  • 华为OD机试 - 解密犯罪时间(Java)

    题目描述 警察在侦破一个案件时 得到了线人给出的可能犯罪时间 形如 HH MM 表示的时刻 根据警察和线人的约定 为了隐蔽 该时间是修改过的 解密规则为 利用当前出现过的数字 构造下一个距离当前时间最近的时刻 则该时间为可能的犯罪时间 每个
  • 【数据结构】堆、栈的区别

    heap 是堆 stack 是栈 在编程语言中 内存分配方式主要包括 栈 堆 静态存储分配 栈的内存是由操作系统自动分配 释放的 存放函数的参数值 局部变量等 堆的内存是由程序员手动申请和释放的 对应C语言中的malloc函数和C 中的ne
  • 2023最新华为OD机试,独家整理总结上岸技巧,答读者问华为OD 华为OD机试备考攻略

    文章目录 华为OD在线刷题OJ 华为OD统一考试A卷 B卷 新题库说明 什么是华为OD 华为 OD 应聘流程 华为 od 机试 机试 分数 院校问题 华为 OD 机试 二本院校有机会吗 华为 OD 机试 跨专业可以参加华为OD 华为 OD
  • 使用c++超详细解释数据结构中的顺序栈和链栈

    在C 中 栈 Stack 是一种数据结构 它可以用来存储数据 并支持两种基本操作 压入 Push 和弹出 Pop 栈的特点是后进先出 Last In First Out LIFO 也就是最后压入的元素最先弹出 栈可以用数组或链表等数据结构来
  • 【数据结构】复杂度

    博客主页 小王又困了 系列专栏 数据结构 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 什么是数据结构 二 什么是算法 三 算法的效率 四 时间复杂度 4 1大O渐进表示法 4 2常见时间复杂度计算举例 4 3例题 消失的数字
  • 4--一元多项式的乘法与加法运算

    个人题解 include
  • 剑指 Offer 18. 删除链表的节点 -- 双指针

    0 题目描述 leetcode原题链接 剑指 Offer 18 删除链表的节点 1 双指针解法 删除值为 val 的节点分需为两步 定位节点 修改引用 定位节点 遍历链表 直到 head val val 时跳出 即可定位目标节点 修改引用
  • 华为OD机试真题-座位调整-2023年OD统一考试(B卷)

    题目描述 疫情期间课堂的座位进行了特殊的调整 不能出现两个同学紧挨着 必须隔至少一个空位 给你一个整数数组 desk表示当前座位的占座情况 由若干 0 和 1 组成 其中 0 表示没有占位 1 表示占位 在不改变原有座位秩序情况下 还能安排
  • 剑指Offer - 面试题25:合并俩个排序的链表

    题目 输入俩个递增排序的链表 合并这俩个链表并使新链表中的节点仍然是递增序列 例如下图链表1和链表2 合并后的升序链表为链表3 链表节点定义如下 typedef int TElemType 链表节点值的数据类型 struct ListNod
  • <数据结构>创建一个单链表

    单链表基本操作的实现 内容 构建线性表的链式存储结构 采用动态分配方式实现单链表的初始化 数据的插入 删除 输出单链表内中各元素 求单链表的长度 实现单链表中数据结点的按值排序 实现单链表的逆置 合并两个有序的单链表 有序的a表和有序的b表
  • 数据结构之数组

    目录 前言 线性表与连续内存 数组是如何支持随机访问 数组的插入与删除 数组越界 总结 参考文章 前言 数组是我们平时开发中经常遇到的一种数据结构 提起数组 我们能想到最大的特点就是 要提前定义好 需要提前申请好内存空间 数组是一种线性表数
  • 模拟实现 队列 - JAVA(使用链表,数组)

    以链表实现 以数组实现 以链表实现 class Node public int val public Node next public Node int val this val val public class MyQueue publi
  • 双向链表详解

    目录 一 双向链表的概念及结构 二 双向链表的方法及其实现 2 1 双向链表 2 2 addFirst int data 头插法 2 3 addLast int data 尾插法 2 4 size 链表长度 2 5 display 打印链表
  • 【C++】STL中list容器内部元素的移动和交换

    文章目录 前言 一 list是什么 二 元素移动 1 插入 删除 2 切除 拼接 三 元素交换 1 元素值交换 2 元素 节点 交换 总结 前言 提示 list insert list erase list splice std iter
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next
  • 链表的中间节点

    链表的中间节点 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems

随机推荐

  • 猿创征文|【云原生之Docker】使用Docker部署Flare个人导航网页

    猿创征文 云原生之Docker 使用Docker部署Flare个人导航网页 一 卷首语 二 Flare介绍 1 Flare介绍 2 Flare的硬件配置要求 3 Flare的特点 三 检查本地docker环境 1 检查docker服务状态
  • SQL语法:TRUNCATE 清空表

    删除记录的方式汇总 根据条件删除 DELETE FROM tb name WHERE options ORDER BY fields LIMIT n 全部删除 表清空 包含自增计数器重置 TRUNCATE tb name 细节剖析 删除ex
  • (20200920)编程每日一题_C程序设计_operator & and &&

    1 Description codes to infer the difference betwwen operator and operator in C 2 solutions include
  • Android实现高德地图轨迹回放,android开发遇到的技术难点

    写在前面 准备 官方文档解读 创建应用 地图api引入 权限添加 效果展示 过程实现 地图初始化 定位 显示标记点 点平滑移动 添加呼吸点 写在结尾 写在前面 本篇文章是对近期工作项目中集成高德地图轨迹回放和单 多点标记功能的一个总结 方便
  • DS静态查找之顺序查找

    题目描述 给出一个队列和要查找的数值 找出数值在队列中的位置 队列位置从1开始 要求使用带哨兵的顺序查找算法 输入 第一行输入n 表示队列有n个数据 第二行输入n个数据 都是正整数 用空格隔开 第三行输入t 表示有t个要查找的数值 第四行起
  • Magisk工具使用指南

    对于一般玩机用户 Magisk官方提供的发布版本即可满足要求 但对于高级开发者来说这远远不够 我们不仅仅是满足于使用 更要学会定制面具 最好的能完全理解面具的核心架构以便于自己也能写出来一套和面具差不多的工具 这才是我们研究面具最根本的原因
  • 小程序修改顶部导航栏的颜色(电量、时间、胶囊)

    wx setNavigationBarColor frontColor ffffff backgroundColor ffffff 注意 其中frontColor的值只能是 ffffff或者 000000在设置的时候必须结合backgrou
  • STM32实现精准us级延时

    前言 在上一篇文章已经讲了使用通用定时器的方式实现ms和s级别的延时 为什么没有us级别的呢 因为在示波器测量时 没有计算好程序执行的时间 这次找到了方法 测试出通用定时器延时的精准性 同时 也查找了网上常用的使用系统定时器非中断的方式进行
  • 你是外包,麻烦不要偷吃零食,注意素质..

    我自己没经历过外包 靠自己的所见所闻可能写出来的东西会很主观 所幸我有不少外包的读者 还有几个在外包工作或工作过的朋友 在跟她们深度交流之后 这这里聊一下我自己的一些看法 注 本文不代表所有外包公司 依旧存在部分主观意识 目前市场上比较知名
  • 【VMD-LSTM】变分模态分解-长短时记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 变分模态分解算法 1 2 LSTM 2 运行结果 编辑 3 参考文献 4 Python代码实现 1
  • js项目练习第二课

    百度输入法
  • C# 三种代码注释方式

    1 常规注释方式 单行注释 以 符号开始 任何位于 符号后的本行文字都视为注释 块注释 以 开始 结束 任何介于这对符号之间的文字块都视为注释 2 XML注释方式 Extensible Markup Language 可扩展标记语言 符号是
  • Java初级面试常见面试题

    下面的这些不够看 可以访问我的语雀专栏 https www yuque com greedy 9i38g tzpwui 面试题 文章目录 JavaSE Java基本数据类型大小 JAVA中 和 两种符号 抽象类不能创建对象 那么抽象类中是否
  • 剑指offer面试题【14】----剪绳子【Python】【动态规划】【贪婪算法】

    题目描述 给你一根长度为n的绳子 请把绳子剪成m段 m和n都是整数 n gt 1并且m gt 1 每段绳子的长度记为k 0 k 1 k m 请问k 0 k 1 k m 可能的最大乘积是多少 例如 当绳子的长度为8时 我们把它剪成长度分别为2
  • 一天一道算法题(为更好的明天奋斗)

    往期 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 示例 给定 nums 2 7 11 1
  • zynq的lwip echo server实验(有无法ping通的解决方案)

    很多朋友卡在了无法接受回传数据的问题上 下面分享下我的搭建过程和解决方法 这里提供我的工程和用到的两个教程 版本vivado vitis2020 2 lwip echoserver zip C文档类资源 CSDN下载 1 根据开发板的端口
  • nfsv4文件服务器,在CentOS 7上配置NFSv3和NFSv4的步骤

    本文介绍在CentOS 7上配置NFSv3和NFSv4的具体步骤 唯一的条件是你应该安装CentOS 7服务器和数据目录以通过NFS导出到其它服务器 安装请参考在VMware中安装CentOS操作系统教程 第1步 安装NFS服务器 使用以下
  • 阿里云oss出现No ‘Access-Control-Allow-Origin‘的问题

    解决办法 在oss管理控制台中设置bucket中数据安全的跨域设置 然后创建规则 来源是请求的网址 可以使用通配符 允许 Methods就是允许跨域的方法 可以多选 注意这里的规则最多10条
  • Arduino对57步进电机的控制

    最近实验室的智能车从大车路线改到了小车路线 于是笔者也跟着学习一些新的知识 大车的控制可以使用标准的CAN协议 很多方便的指令都能够通过CAN来传输给ECU并得到相应的反馈 然而对于最近接触的电动小白车 控制策略只能使用物理机械去控制 因此
  • 循环链表算法及代码实现

    一 循环单链表 直接上图就能够说明循环单链表的存储结构 简单直观 我们关注一下其特点 与非循环单链表相比 循环单链表 1 无空指针域 2 尾节点的判断条件为 p gt next L 二 循环双链表 同样直接上图 与非循环双链表相比 1 无空