Python - 链接列表 - 附加

时间:2017-10-16 22:31:55

标签: python python-3.x linked-list

我试图在python中学习链接列表我已经获得了Linked List类,并被要求创建追加方法。

这是提供的代码。

class Node:
    def __init__(self, item, next):
        self.item = item
        self.next = next

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

    def add(self, item):
        self.head = Node(item, self.head)

    def remove(self):
        if self.is_empty():
            return None
        else:
            item = self.head.item
            self.head = self.head.next
            return item

    def is_empty(self):
        return self.head == None

    def __str__(self):
        tmp_str = ""
        ptr = self.head
        while ptr != None:
            tmp_str += ptr.item + " "
            ptr = ptr.next

        return tmp_str

这是我的追加方法,但它有问题。我知道如果链接列表是空的我必须创建一个,当内部有元素时会出现问题。

def append(self, item):
    ptr = self.head
    if ptr:
        while ptr != None:
            ptr = ptr.next
        ptr = Node(item, ptr)
    else:
        self.head = Node(item, self.head)

任何人都可以告诉我,我做错了什么?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

进行两次检查 - 首先检查self.head是否已初始化。第二个应遍历列表,直到找到最后一个节点。确保不要超越边界,否则您将无法将最后一个节点链接到 new 最后一个节点。

def append(self, item):
    if not self.head:
        self.head = Node(item, self.head)
    else:
        ptr = self.head
        while ptr.next:                    # traverse until ptr.next is None
            ptr = ptr.next
        ptr.next = Node(item, ptr.next)    # initialise ptr.next