Просто для начала, это домашнее задание, поэтому я просто ищу намек здесь. Я довольно новичок в Python и программировании в целом. Я должен реализовать список, основанный на курсоре, который дважды связан. У меня возникли проблемы с вставкой в список. Мой инструктор предоставил простой класс Node класс Node2Way. Он также представил метод инициализации:Python 3 Вставка в двойной связанный список
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.
Любые советы были бы оценены. Заранее спасибо! :)
Эй вы можете разместить код, в котором вы фактически вставляете два элемента в 'CursorBasedList()', а также сообщение об ошибке? –