Python3 单链表成就问题
Python3 Singly Linked List achievement issue
我通过Python3写了一个简单的单链表,但是class中的查找功能没有正常执行。
我觉得其他功能还可以。
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
。你能帮我弄清楚吗?
您必须对 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
我通过Python3写了一个简单的单链表,但是class中的查找功能没有正常执行。 我觉得其他功能还可以。
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
。你能帮我弄清楚吗?
您必须对 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