单链表

问题描述 投票:0回答:1

目前正在自学/研究数据结构和算法。我带着这个教程来了。 我认真地听他的讲座。然而,当我将他的代码实现到我的 jupyter 笔记本时。我收到一条错误消息“AttributeError:类型对象‘节点’没有属性‘值’”

这是代码:

class Node:
    def __init__(self, value= None):
        self.value = value
        self.next = None  # -------------------------> O(1)

class SLinkedList:
    def __init__(self):
        self.head = None
        self.tail = None
    def __iter__(self):
        node = self.head
        while node:
            yield node
            node = node.next
    # insert in linked list
    def insertSLL(self, value, location):
        newNode = Node(value)
        if self.head is None:
            self.head = newNode
            self.tail = newNode
        else:
            if location == 0:
                newNode.next = self.head
                self.head = newNode
            elif location == 1:
                newNode.next = Node 
                self.tail.next = newNode 
                self.tail = newNode
            else:
                tempNode = self.head
                index = 0
                while index < location - 1:
                    tempNode = tempNode.next
                    index += 1
                nextNode = tempNode.next
                tempNode.next = newNode
                newNode.next = nextNode
                if tempNode == self.tail:
                    self.tail = newNode


singlyLinkedList = SLinkedList()
singlyLinkedList.insertSLL(1, 1)
singlyLinkedList.insertSLL(2, 1)
singlyLinkedList.insertSLL(3, 1)
singlyLinkedList.insertSLL(4, 1)

singlyLinkedList.insertSLL(0, 0)
singlyLinkedList.insertSLL(0, 3)

print([node.value for node in singlyLinkedList])


希望有人能解释一下为什么它现在不起作用。尊重岗位。我是编程世界的新人。

提前谢谢您。

解释哪里出了问题

python-3.x data-structures linked-list
1个回答
0
投票

您的问题在于这段代码:

elif location == 1:
    newNode.next = Node
    self.tail.next = newNode 
    self.tail = newNode

问题是您将

newNode.next
设置为
Node
,这是不正确的。在这种情况下,
next
应保持未定义。

更正后的代码应如下所示:

elif location == 1:
    self.tail.next = newNode 
    self.tail = newNode

这样,

newNode.next
就不会被错误分配,从而确保正确的链表行为。

© www.soinside.com 2019 - 2024. All rights reserved.