开始没看单向循环链表,感觉应该很简单,但实际上有几个概念不是很清楚:

头结点,头指针,尾指针,尾节点???

【个人理解】:头结点就是一个链表中实际存储数据的那个节点的前一个节点,这个节点不存储数据,只有一个指针指向第一个实际存储数据的节点(这个有效节点专业术语叫:首元素),这个节点就是头节点,指向头结点的指针就是头指针,至于尾指针,就是单纯的一个指针了,他没有一个节点作依托,孤零零的一个指针。尾指针指向最后一个存储数据的节点(尾指针内部存储的就是这个节点的地址),至于尾节点,还没有见到过。

上面的概念配图解释一下:

有尾指针的单向循环链表的情况:

有头结点无尾指针的情况:

总结:

单循环链表常采用使用尾指针的方式实现,原因是在实际使用中,我们常需要访问首元素和尾元素,上面的图片里已经给出具体访问的方式,可以看出有尾指针的单向循环链表可以再O(1)的时间内完成访问,而没有尾指针只有头结点的单向循环链表访问 首元素是常数时间,但访问尾元素却需要O(n)的时间,这在表很大的情况下是很浪费时间的,所以常采用有尾指针的方式来实现。

转载于:https://www.cnblogs.com/hanbingyun/p/4474010.html

线性表—单向循环链表相关推荐

  1. 线性表(单向)链式存储 - Java实现

    单向链式存储实现 package com.kiger.Link;/*** @ClassName LinkList* @Description 单向链表实现* @Author zk_kiger* @Da ...

  2. std::list 循环删除指针_数据结构_006_线性表_循环链表

    循环链表   单向链表只有一个指针,指向下一个元素的地址.所以单向链表只能向后遍历,不能回头.   双向链表有两个指针,分别指向该结点的直接前驱和直接后驱,所以双向链表可以向前遍历,也可以向后遍历,可 ...

  3. step3 . day3 数据结构之线性表 单项循环链表和双向循环链表

    1. 使用单项循环链表解决约瑟夫问题: #include <stdio.h> #include <stdlib.h> typedef struct looplist{ int ...

  4. Algorithms_基础数据结构(04)_线性表之链表_单向循环链表约瑟夫环问题

    文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 结构 分析 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 tip:单向链表 约瑟夫问题 N个人围成一圈, ...

  5. 数据结构——线性表:顺序表、单向链表、循环链表、双向链表

    线性表   是一种数据结构:n个数据元素的有限序列 表示形式: L = (a1,a2...an) a1是线性表的元素,小写. n=0时候为空表 数据元素具有相同特性 相邻元素之间存在序偶关系:即有唯一 ...

  6. Algorithms_基础数据结构(02)_线性表之链表_单向链表

    文章目录 大纲图 链表的经典面试题目 如何设计一个LRU缓存淘汰算法 约瑟夫问题 顺序表VS 链表 链表的定义 链表的特点 常见的链表结 单向链表 单向链表的查找 单向链表的插入 头插 尾部插入 中间 ...

  7. 数据结构-线性表之带头结点的双向循环链表

    文章目录 前言 实现 (1)结构定义 (2)基本函数 (3)操作实现 测试 代码 前言 链表的类型有很多种(根据带头或不带头,循环或非循环等等),但是我们重点研究的只有两种,一种结构非常简单是无头单向 ...

  8. 数据结构(四) -- C语言版 -- 线性表的链式存储 - 循环链表

    文章目录 零.读前说明 一.循环链表的概述 二.循环链表的模型 2.1.包含头节点模型 2.2.不包含头节点模型 三.工程结构及简单测试案例 3.1.测试工程的目录结构 3.2.循环链表示例源码 3. ...

  9. 【胎教级数据结构】线性表4:不必道别,再见即是相见——循环链表

    1.前言 循环链表的优美之处在于,它没有结束的概念,节点之间延绵无尽,像是生命中的相遇与缘分,不停地延伸着,连接着过去.现在和未来.正因如此,它具备了一些我们想象中的超凡特性:它可以做为缓冲区用来存放 ...

最新文章

  1. 下列哪个不是python合法的变量名_下列哪个不是Python中合法的数据类型?
  2. mongod副本集的安装配置
  3. 《Spring 3.0就这么简单》——1.6 展现层
  4. 通过实现继承TabActivity并且实现TabContentFactory的方法创建选项卡的一点心得
  5. 设计模式初探之模板方法(Template Method)
  6. 附加作业:源自刘乾老师的问题
  7. 【王道计组笔记】Cache高速缓存基本工作原理
  8. 在网页中嵌入百度地图的步骤
  9. C语言日志库zlog基本使用
  10. 给浏览器添加油猴插件 and 如何使用
  11. cfd计算机模拟,cfd模拟(cfd模拟软件)
  12. 人工智能技术及其应用初探
  13. AFD-0654: AFD is not supported on Exadata systems CRS-10001: Errors xxx.ko was not found
  14. 同步电机是如何达到同步的?工作原理是什么?
  15. CP2102 USB to UART Bridge Controller 驱动安装(windows or Ubuntu)
  16. JVAV中常见的十大异常
  17. 推荐 : 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!(附代码)...
  18. Led台灯对眼睛好吗?2022双十一不伤眼的护眼灯推荐
  19. String类型——字符串
  20. 小米手环NFC 模拟门禁卡 不买东西最简解决方案(100字)

热门文章

  1. 数学之路(3)-机器学习(3)-机器学习算法-神经网络[17]
  2. NUnitForms 测试GUI应用程序的优秀工具
  3. 《Linux内核设计与实现》读书笔记(8)--- 内核同步方法(2)
  4. 将unicode编码的txt文件转为utf-8编码
  5. 在windows中安装python
  6. 异步复位和同步释放电路的详细解释
  7. html frame 菜单切换,官方底部导航如何通过frame0.html的JS控制切换
  8. spyder画图窗口浮动
  9. JVM最佳学习笔记一---Java内存区域与内存溢出异常
  10. Flutter GitHub Travis CI 搭建