我已经通过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
时,它应该包含在列表中,因此输出应该是True
以外的False
。您能帮我解决吗?
答案 0 :(得分:2)
您必须对search
方法做些微改动。
这仅表示直到cur
指向None
之前,一直循环播放。变量cur
首次初始化时,它指向第一个元素,而不是None。如果您尝试使用条件while not cur
进行循环,则条件在第一次迭代中的结果为false,并且在所有情况下都将为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