代码之家  ›  专栏  ›  技术社区  ›  Liferafter

TypeError:缺少1个必需的位置参数(LinkedList)

  •  0
  • Liferafter  · 技术社区  · 2 年前

    我的问题是我的链表实现,它根本不想识别我的论点。让我向您展示代码来说明我的意思:

    class Node:
            def __init__(self, element:int):
                self.element = element
                
            element:int = 0
            nextNode = None
    
    class LinkedList:
        head:Node = None
            
        def insert(self, element:int):
            if self.head == None:
                currentNode = Node.__init__(element)
                self.head = currentNode
            else:
                currentNode = self.head
                while currentNode.nextNode != None:
                    currentNode = currentNode.nextNode
                newNode = Node.__init__(element)
                currentNode.nextNode = newNode 
        
        def prettyPrint(self):
            currentNode = self.head
            
            print("Current Linked List\n")
            while currentNode.nextNode != None:
                print(currentNode.element+" ---> ")
                currentNode = currentNode.nextNode
            
                    
                
    
    def main():
        Linkedlist = LinkedList()
        Linkedlist.insert(1)
        Linkedlist.insert(9)
        Linkedlist.insert(2)
        Linkedlist.insert(18)
        Linkedlist.insert(5)
        Linkedlist.insert(8)
        Linkedlist.prettyPrint()
        
    
    
    if __name__ == '__main__':
        main()
    

    插入方法中发生错误

    currentNode=节点。 初始化 (元素)

    我是Python新手,因此非常感谢您的帮助。

    2 回复  |  直到 2 年前
        1
  •  1
  •   Michael Kopp    2 年前

    以下是您的代码,其中有两个小补丁:

    1. 构造a Node 通过调用 Node(element)
    2. 在里面 print 使用 , 或使用 end="something" 告诉你 打印 放置 "something" 在输出的末尾。
    class Node:
        def __init__(self, element: int):
            self.element = element
    
        element: int = 0
        nextNode = None
    
    
    class LinkedList:
        head: Node = None
    
        def insert(self, element: int):
            if self.head == None:
                currentNode = Node(element)
                self.head = currentNode
            else:
                currentNode = self.head
                while currentNode.nextNode != None:
                    currentNode = currentNode.nextNode
                newNode = Node(element)
                currentNode.nextNode = newNode
    
        def prettyPrint(self):
            currentNode = self.head
    
            print("Current Linked List\n")
            while currentNode.nextNode != None:
                print(currentNode.element, end=" ---> ")
                currentNode = currentNode.nextNode
    
    
    def main():
        Linkedlist = LinkedList()
        Linkedlist.insert(1)
        Linkedlist.insert(9)
        Linkedlist.insert(2)
        Linkedlist.insert(18)
        Linkedlist.insert(5)
        Linkedlist.insert(8)
        Linkedlist.prettyPrint()
    
    
    if __name__ == "__main__":
        main()
    
    

    享受学习python的乐趣;)

        2
  •  1
  •   BhusalC_Bipin    2 年前

    正如我在评论中提到的,替换 currentNode = Node.__init__(element) 具有 currentNode = Node(element) .

    此外,我建议您 Node 像这样的课程。

    class Node:
            def __init__(self, element:int):
                self.element = element
                self.nextNode = None
    

    此外 您的 prettyPrint() 方法

    首先,你会得到 TypeError 因为线路, print(currentNode.element+" ---> ") .

    其次,您没有打印链表的最后一个元素。因此,添加 print(currentNode.element) while loop .

    所以,我会把它改成这样,以得到你想要的输出。

    def prettyPrint(self):
            currentNode = self.head
        
            print("Current Linked List\n")
            while currentNode.nextNode != None:
                print(currentNode.element, end=' ---> ')
                currentNode = currentNode.nextNode
            print(currentNode.element)