はじめに、これは宿題なので、ここでヒントを探しています。私はPythonとプログラミング全般にかなり慣れていません。二重にリンクされたカーソルベースのリストを実装することになっています。リストへの挿入に問題があります。私のインストラクターは、Node2Wayクラスという単純なNodeクラスを提供しました。彼はまた、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メソッドをテストすると、最初のアイテムを追加するために機能しますが、2番目のアイテムを追加しようとすると、self._currentはNoneタイプであり、getNextメソッドを使用できません。現在のノードの後にノードを参照するように一時的に取得する別の方法があるかどうかはわかりません。何が間違っているのか、あるいは何かが正しいのかどうかはわかりません。insertAfterメソッドを正しく取得したら、insertBeforeメソッドで問題ないと思います。
ヒントをいただければ幸いです。前もって感謝します!:)