python - Python3单链表成就问题
问题描述
我通过Python3写了一个简单的单链表,但是类中的搜索功能没有正常执行。我认为其他功能还可以。
class Node():
"""节点"""
def __init__(self, elem):
self.elem = elem
self.next = None #initialed the next node as None
class SingleLinkList():
"""single linked list"""
def __init__(self, node=None):
self.__head = node
def travel(self):
'''traversing the linked list'''
cur = self.__head
while cur != None:
print(cur.elem, end = ' ')
cur = cur.next
print('\n')
def add(self, item):
'''Add elements to the list header'''
node = Node(item)
node.next = self.__head
self.__head = node
def search(self, item):
'''Verify node existence'''
cur = self.__head
while not cur:
if cur.elem == item:
return True
else:
cur = cur.next
return False
l1 = SingleLinkList()
l1.add(2)
l1.add(3)
l1.travel()
print(l1.search(2))
[~]$ python3 temp.py
3 2
False
显然,当搜索 int 时2
,它应该包含在 list 中,所以输出应该True
不是False
。你能帮我弄清楚吗?
解决方案
您必须对search
方法稍作更改。
这只是意味着,直到cur
不指向None
,继续循环。当变量cur
第一次初始化时,它指向第一个元素,它不是None。如果您尝试使用条件进行循环while not cur
,则在第一次迭代本身中,条件的计算结果为假,并且return False
在所有情况下都会如此。
def search(self, item):
'''Verify node existence'''
cur = self.__head
while cur:
if cur.elem == item:
return True
cur = cur.next
return False
推荐阅读
- python - 带有语音激活功能的 Python 虚拟助手
- python-3.x - 在不使用python中的任何函数的情况下使* n列表的下半部分为零
- wordpress - 在 wordpress 中,我如何抓取和显示用户的社交媒体数据,例如 upfluence.com 和shoutcart.com?
- windows - 在cygwin中失败
- ios - 如何知道视图的 frame.maxY 是否已经在屏幕顶部滚动?
- r - 计数直到条件为真
- python - ASCII 字符的 QValidator 保持无效
- c# - 如何将嵌套对象添加到 DataGrid C# WPF
- php - 在 laravel 应用程序中托管 laravel 应用程序
- c# - 为什么我的本地 DateTime 没有转换为 UTC?