【问题标题】:Not Getting Correct Print Output with Linked Lists使用链接列表无法获得正确的打印输出
【发布时间】:2016-10-21 11:09:31
【问题描述】:

这是我目前正在使用的功能。它是一个使用节点类的链表。这是implementation of it from my textbook。但是,当我尝试打印时,我得到了这个输出。

ma​​in.Node 对象位于 0x000001C1A21E5470> ma​​in.Node 对象位于 0x000001C1A21E5438> ma​​in.Node 对象位于 0x000001C1A21E54A8> ma​​in.Node 对象位于 0x000001C1A21E5400>

我读到使用 __repr__ 可以帮助打印,但是当我实现它时它对我不起作用。

def copyList(self):
    links = LinkedList()
    current = self.head
    while current.getNext() != None:
        links.addLast(current)
        current= current.getNext()
    links.addLast(current.getData())
    return links

函数是这样调用的

list2=list1.copyList()
print(list2)

我尝试的 repr 函数

def __repr__(self):
    string=''
    current = self.head
    if current != None:
        string += str(current.getData())
        current = current.getNext()
        counter=2
        while current:
            string += " "+str(current.getData())
            current = current.getNext()
            if counter>9:
                string=string+'\n'
                counter=0
            counter=counter+1
    return string

【问题讨论】:

  • current.getData() 返回什么?
  • 返回节点的字符串值

标签: python list linked-list nodes


【解决方案1】:

看来我误解了你的问题。

我认为问题出在您的copyList 函数中。应该是:

def copyList(self):
    links = LinkedList()
    current = self.head
    while current.getNext() != None:
        links.addLast(current.getData())
        current = current.getNext()
    links.addLast(current.getData())
    return links

你使用了links.addLast(current)。更多细节需要看addLast()方法的实现。

【讨论】:

  • 我现在的代码中有一个 _str_ 和 _repr_。我应该摆脱一个吗?我之前只使用过 _str_ ,但它似乎也不起作用。 _str_ 和 _repr_ 都有相同的代码
  • @pythonHelp 对不起,我可能误解了你的问题。我编辑了我的答案。希望对您有所帮助。
  • 谢谢,这实际上解决了我的问题。当它应该是字符串时,我使用节点作为参数作为函数。谢谢!
  • @pythonHelp 很高兴为您提供帮助。你可以接受这个答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2023-03-16
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多