双链表实现不起作用

时间:2017-03-18 20:53:47

标签: python class oop methods doubly-linked-list

我是面向对象编程和本网站的新手。

我已经为大学项目工作了很长一段时间(或者至少我试过)。我必须创建一个处理双向链表的程序,更确切地说,我需要实现以下内容:

  • class Node
  • class LinkedList
  • 各种方法。

这是我的代码到目前为止的样子:

class Node:
    def __init__(self):
        self.value = None
        self.next_node = None
        self.previous_node = None

class LinkedList(object):
    def __init__(self):
        self.first = None
        self.last = None

    def __str__(self):
        return 'This is the value: '.format(self.first)

    def append(self, value):
        new_node = Node()
        self.first = new_node

def main():
    myList = LinkedList()
    myList.append(20)
    print(myList)

我希望输出为:"This is the value: 20"

但我得到的输出是:"This is the value: "

我的错误是什么?我的append方法或__str__方法无法正常工作(或两者都不能)。 (这可能是非常明显的事情)

1 个答案:

答案 0 :(得分:2)

{}添加到字符串中以告知格式放置值的位置。

def __str__(self):
    return 'This is the value: {}'.format(self.first)

请参阅string format examples的Python文档。

并且,根据@ Jeremy的评论,您还需要将值分配给新节点,并将 str ()函数添加到Node类。

这应该有效:

class Node:
    def __init__(self, value=None):
        self.value = value # <- store the value in the object
        self.next_node = None
        self.previous_node = None

    def __str__(self):             # <- return the value as a string
        return str(self.value)

class LinkedList(object):
    def __init__(self):
        self.first = None
        self.last = None

    def __str__(self):
        return 'This is the value: {}'.format(self.first)

    def append(self, value):
        new_node = Node(value) # <- pass value to the Node
        self.first = new_node
main()
    myList = LinkedList()
    myList.append(20)
    print(myList)