【问题标题】:Linked List and manipulation链表和操作
【发布时间】:2013-08-26 08:58:26
【问题描述】:

我需要帮助在 python 3.3 中构造一个没有构造函数参数的 LinkedList;导致一个空的 LinkedList 对象。我希望能够在列表的前面和末尾添加和删除元素。到目前为止,我只能在前面添加和添加东西。我对其他一切如何运作有点不确定。到目前为止,这是我所拥有的:

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


class LinkedList:
    def __init__(self):
        self._head = None
        self._size = 0

    def __len__(self):
        return self._size

    def append(self, item):
        pass

    def prepend(self, item):
        self._head = Node(item, self._head)
        self._size += 1

    def remove_first(self):
        pass

    def remove_last(self):
        pass

有人知道吗?非常感谢!

【问题讨论】:

  • 那倒是挺简单的,不如你先自己试一试,看看哪个部分你看不懂。

标签: python object constructor linked-list append


【解决方案1】:

您可以使用标准库中集合模块中的 deque 对象。您的 prepend 方法在 deque 对象中称为 appendLeft。

以另一种方式,您可以通过引用列表的最后一个节点来修改您的 LinkedList 类:

class LinkedList:
    def __init__(self):
        self._head = None
        self._tail = None
        self._size = 0

    def append(self, item):
        if self._tail is None:
            self.prepend(item)
        else:
            self._tail.next = Node(item, None)
            self._tail = self._tail.next

    def prepend(self, item):
        if self._head is None:
            self._tail = Node(item, None)
            self._head = self._tail
        else:
            self._head = Node(item, self._head)
        self._size += 1

【讨论】:

  • 嗯,有没有一种方法我不需要使用 deque 对象?不使用它有很多偏好。想学习如何制作我自己的链接数据结构。 :)
  • 当然,您需要在 LinkedList 对象中添加对最后一个节点的引用。
  • 啊,我明白了。我懂了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
相关资源
最近更新 更多