python - 链表循环检测基本问题
问题描述
所以这是我检测循环的代码。我在这里有一个疑问。为什么我要在 dic 中寻找 current 而不是在 dic 中寻找 current.data?如果我单独存储该节点的值,它会给出错误的答案。当我存储节点的值而不是节点时会发生什么。我正在学习链表,所以我无法掌握存储节点本身时会发生什么以及单独存储节点值时会发生什么。
def detectLoop(head):
dic={}
current=head
flag=5
while current is not None:
if current in dic:
flag=6
break
else:
dic[current]=5
current=current.next
if flag==5:
return False
else:
return True
解决方案
通过比较节点,您正在检查您是否在同一节点对象上运行了两次。通过检查值,您忽略了两个节点可能共享相同值的情况,因此,您的方法将报告存在一个循环,而实际上没有。如果没有具有重复值的节点,那没关系。
推荐阅读
- jquery - Jquery循环遍历div中的元素div
- ios - Firebase - 应用程序长时间无响应(因为数据同步?)
- oracle - Oracle如何将带有任何时区的时间戳转换为带有数据库服务器时区的日期
- python - Flask Application - 'NoneType' 类型的参数不可迭代
- sql-server - 具有多个数据集的 SSRS 性能
- security - 一次性 RSA 公钥
- c# - 正则表达式使用某些规则c#删除不必要的符号
- c++ - 如何知道创建对象时是否没有传入参数?
- java - 如何在 Thymeleaf 中使用 Dates.Format 和语言环境
- javascript - 从嵌套数组到对象的json转换