【问题标题】:Python LinkedList SearchPython 链表搜索
【发布时间】:2016-03-23 10:38:47
【问题描述】:

我正在用 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() 方法?我认为我的想法是正确的,但它不起作用。谢谢!

【问题讨论】:

    标签: python data-structures linked-list


    【解决方案1】:

    当你在同一个类中调用方法时,你需要用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)  # <--
    

    顺便说一句,当前的search 实现需要用户通过n(可能是LinkedList.head)。所以我会做一个包装器从头开始搜索,所以用户不需要每次都指定linked_list_instance.head

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-03
      • 2015-05-20
      • 2014-04-07
      • 2015-06-14
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多