单向循环链

简介: 单向循环链表是一种链式存储结构,每个节点只包含一个指针,指向其后继。相比于单向链表,单向循环链表在插入和删除节点时需要移动元素的指针,因此时间复杂度较高。但是,单向循环链表的内存占用较少,且在某些情况下可以减少内存碎片。

单向循环链表是一种链式存储结构,每个节点只包含一个指针,指向其后继。相比于单向链表,单向循环链表在插入和删除节点时需要移动元素的指针,因此时间复杂度较高。但是,单向循环链表的内存占用较少,且在某些情况下可以减少内存碎片。
使用单向循环链表时,需要创建一个节点类,用于表示链表中的每个节点。节点类通常包含数据域和指向后继的指针。在实际应用中,可以根据需求定义其他属性和方法。
以下是一个简单的单向循环链表实现:

class Node:
def init(self, data):
self.data = data
self.next = None
class SinglyLinkedCycle:
def init(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
new_node.next = new_node
else:
new_node.next = self.head.next
self.head.next = new_node
def display(self):
cur_node = self.head
while cur_node:
print(cur_node.data, end=" <-> ")
cur_node = cur_node.next
print("None")

使用示例

cycle = SinglyLinkedCycle()
cycle.append(1)
cycle.append(2)
cycle.append(3)
cycle.display()
CopyCopy

什么时候使用单向循环链表:

  1. 内存占用较少的场景。
  2. 插入和删除节点频率较低的场景。
    推荐 Demo:
  3. 实现单向循环链表的基本操作,如插入、删除、遍历等。
  4. 使用单向循环链表实现栈、队列等数据结构。
  5. 使用单向循环链表实现图的遍历算法,如深度优先搜索、广度优先搜索等。
目录
相关文章
|
6月前
|
索引
常见任务中的双重while循环的结构
常见任务中的双重while循环的结构
|
2月前
|
JavaScript 前端开发 机器人
单向绑定11
单向绑定11
43 3
|
6月前
|
索引
在职责链模式中,如何确保请求在职责链上按照特定的顺序流动
在职责链模式中,如何确保请求在职责链上按照特定的顺序流动
|
6月前
|
存储 C++ 索引
c++for结构循环超详细讲解
c++for结构循环超详细讲解
118 1
|
存储 移动开发 算法
【数据结构和算法】使用数组的结构实现链表(单向或双向)
【数据结构和算法】使用数组的结构实现链表(单向或双向)
C#基础⑤——三大结构(顺序、分支、循环)
顾名思义,就是按照所写代码的书写顺序、从上到下的顺序来执行。
|
存储 JavaScript 前端开发
栈,队列和链表三者之间的关系与区别
栈,队列和链表三者之间的关系与区别
240 0
栈,队列和链表三者之间的关系与区别
|
存储 算法 小程序
数据结构与算法——第三节 链表(单向不循环不带头+双向循环带头 C实现+源码剖析+运行+思路分析)
可以看到 ,我如果要吧黑球插入到白球里面,显然,我要把7号位的球移到8号位,5号位的球移到6号位...然后最后才能把2号位的求插进去。如果有N个数据,那么它的算法的时间复杂度达到了O(N)!
117 0
数据结构与算法——第三节 链表(单向不循环不带头+双向循环带头 C实现+源码剖析+运行+思路分析)
数据结构与算法__01--单链表无顺序添加时,节点对象形成封闭环问题,无法添加同一个对象导致遍历输出时一直执行输出
单链表无顺序添加时,节点对象形成封闭环问题,无法添加同一个对象导致遍历输出时一直执行输出