刚开始,这是作业,所以我只是在这里寻找提示。我对 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 方法。我不知道是否有另一种方法可以让 temp 在当前节点之后引用节点。我不确定我做错了什么,或者即使我做的任何事情都是对的。我想一旦我正确地使用了 insertAfter 方法,我就可以使用 insertBefore 方法了。
任何提示将不胜感激。先感谢您!:)