Python LinkedList搜索

时间:2015-12-17 04:12:11

标签: python data-structures linked-list

我正在为Python中的链接列表编写代码,这是代码的一部分:

class LinkedList:
    def __init__(self):
        self.head = None

    def search(self, n, value):
        if n is None:
            return False
        elif n.data == value:
            return True
        else:
            return search(n.next, value)

    def append(self, new_value):
        if self.head is None:
            self.head = LinkedListNode(new_value)
        else:
            node = self.head
            while node.next != None:
                node = node.next
            node.next = LinkedListNode(new_value)

    def remove(self, position):
        if position > 0:
            node = self.head
            l = 0
            while node != position - 1:
                l += 1
                node = node.next
            node.next = node.next.next
        elif position == 0:
            self.head = self.head.next

我只是想知道如何实现search()方法?我想我有正确的想法,但它不起作用。谢谢!

1 个答案:

答案 0 :(得分:3)

当您在同一个班级内调用该方法时,您需要使用self对其进行限定。

def search(self, n, value):
    if n is None:
        return False
    elif n.data == value:
        return True
    else:
        return self.search(n.next, value)  # <--

BTW,当前search实施要求用户传递nLinkedList.head可能)。所以我会创建一个从头部搜索的包装器,因此用户不需要每次都指定linked_list_instance.head

def search_from_head(self, value):
    return self.search(self.head, value)