【问题标题】:my python printlinkedlist function prints the memory instead of the linked list我的 python printlinkedlist 函数打印内存而不是链表
【发布时间】:2021-10-13 18:16:55
【问题描述】:

我最近开始学习数据结构和算法,我决定从链表开始。在我看了很多关于它的教程之后,我决定自己创建它,但是我遇到了一些问题。我的打印函数打印一个内存地址而不是链表。我意识到我正在尝试打印一个对象,但问题是我没有找到缺陷。请帮忙

class Node:
        
            def __init__(self,data,next=None):
                self.data = data
                self.next = next
        
        class LinkedList:
        
            def __init__(self,head=None):
                self.head = head
        
            def append(self,data):
                if self.head is None:
                    self.head = Node(data)
                    return
                else:
                    itr = self.head
                    while itr.next:
                        itr = itr.next
                    else:
                        itr = Node(data)
                        itr.next = Node(data)
         def print(self):
                itr = self.head
                while itr:
                    print(itr.data," --> ",end="")
                    itr = itr.next
                    return
                else:
                    print("None")
                    return
        
            def reverse(self):
                pass
        
        linked = LinkedList()
        linked.print()
        linked.append(Node(3))
        linked.print()
        linked.append(Node(7))
        linked.print()
        linked.append(Node(10))
        linked.print()

【问题讨论】:

  • linked.append(Node(3)) --> linked.append(3)
  • @JohnnyMopp 哇,它现在可以工作了,谢谢。但它只打印三分球。我可能还有另一个问题

标签: python data-structures linked-list


【解决方案1】:

您将Node 传递给append,然后创建第二个Node。只需传递数字即可。

另外,您似乎没有正确使用 while/else 构造。如果 while 部分运行完成(while 条件不再为真),则进入 else 块 - 即没有 break 或异常。

另外,在print() 你有类似的东西:

while some_condition:
    # Other stuff...
    return

这意味着循环只执行一次(除非有continue)。因此,无论列表有多大,都只会打印第一项。

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

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

    def append(self,data):
        if self.head is None:
            self.head = Node(data)
        else:
            itr = self.head
            while itr.next:
                itr = itr.next
            itr.next = Node(data)

    def print(self):
        if self.head is None:
            print("None")
            return
        itr = self.head
        while itr:
            print(itr.data," --> ",end="")
            itr = itr.next
        print()

linked = LinkedList()
linked.print()
linked.append(3)
linked.print()
linked.append(7)
linked.print()
linked.append(10)
linked.print()

【讨论】:

  • 哇,非常感谢您,先生
猜你喜欢
  • 1970-01-01
  • 2021-10-20
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多