Python 3插入双链表

时间:2013-02-23 20:31:48

标签: python python-3.x

刚开始,这是家庭作业,所以我只是在寻找一个提示。我对Python和编程很新。我应该实现一个双向链接的基于游标的列表。我在插入列表时遇到了一些麻烦。我的讲师提供了一个简单的Node类和一个Node2Way类。他还提供了init方法:

from node import Node

class Node2Way(Node):
    def __init__(self,initdata):
        Node.__init__(self,initdata)
        self.previous = None

    def getPrevious(self):
        return self.previous

    def setPrevious(self,newprevious):
        self.previous = newprevious

这是我到目前为止(只是相关的方法):

from node2way import Node2Way

class CursorBasedList(object):
    """ Linked implementation of a positional list."""

    def __init__(self):
        """ Creates an empty cursor-based list."""
        self._header = Node2Way(None)
        self._trailer = Node2Way(None)
        self._trailer.setPrevious(self._header)
        self._header.setNext(self._trailer)
        self._current = None
        self._size = 0

def insertAfter(self, item):
        """Inserts item after the current item, or
        as the only item if the list is empty.  The new item is the
        current item."""
        temp = Node2Way(item)
        if self.isEmpty():
            self._header.setNext(temp)
            self._trailer.setPrevious(temp)
        else:
            temp.setNext(self._current.getNext())
            self._current.setNext(temp)
            temp.setPrevious(self._current)
        self._current = temp
        self._size+=1

当我测试insertAfter方法时,它适用于添加第一项,但是当我尝试添加第二项时,它表示self._current是None类型,不能使用getNext方法。我不知道是否还有另一种方法可以在当前节点之后引用该节点。我不确定我做错了什么,或者即使我做的事情是对的。我想一旦我得到了insertAfter方法,我就可以使用insertBefore方法了。

任何提示都将不胜感激。先感谢您! :)

1 个答案:

答案 0 :(得分:1)

的情况下
    if self.isEmpty():
        self._header.setNext(temp)
        self._trailer.setPrevious(temp)

您永远不会设置temp的上一个和下一个节点。