链表相关文章:
Python实现单向链表(上):小白写法的15种增删改查操作
Python实现单向链表(下):整合式实现增删改查操作
准备工作:创建结点(Node)类
class Node:
def __init__(self, data, next=None):
self.data = data # 数据,当前结点的元素
self.next = None # 指针,指向下一个结点
准备工作:创建一个有环的链表来测试
创建的是一个如下图所示的有环链表:
代码如下:
if __name__ == '__main__':
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node6 = Node(6)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
node6.next = node3
# 在这里调用下面要写的各种函数
# ...
判断链表中是否有环
方法1:用哈希表储存节点,遍历节点与哈希表中元素做对比
将所有的遍历过的节点用字典(哈希表)存储起来,然后每遍历一个节点,在字典中查找是否遍历过该节点。如果字典中存在该节点,说明链表中存在环;如果直到遍历结束,都未在字典中找到重复的节点,说明链表不存在环。
算法的时间复杂度为O(n),空间复杂度为O(n)
代码:
def