首页 > 解决方案 > 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。你能帮我弄清楚吗?

标签: pythonpython-3.xlinked-listsingly-linked-list

解决方案


您必须对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

推荐阅读