Отображение текста в формате reStructured невозможно без установки Docutils.
Задание
=======
Задание очень простое, но зато и с очень строгим дедлайном -- вечер
понедельника (28го).
Скорее всего, решение потребует от вас 15-30 минут размышления и 4-5 строк кода.
(Можно ограничиться 5-ю минутами на размышление, если вы поняли, что такое
двусвязные списки).
Дано определение классов для двусвязных списков::
class Node(object):
def __init__(self, value, next):
self.value = value
self.next = next
self.prev = None
self.next.prev = self
class ListEnd(object):
next = None
prev = None
class List(object):
def __init__(self, items):
self.right = ListEnd()
self.left = self.right
for item in items:
self.push(item)
def push(self, value):
self.left = Node(value, self.left)
def first(self):
return self.left.value
def last(self):
return self.right.prev.value
Требуется дописать в класс List метод pop, который забирает из списка элемент с
конца right. (Бдительный слушатель, если он по совместительству также является
и внимательным читателем, заметит, что класс Node на лекции назывался List,
класс ListEnd назывался Empty, а вместо приведённого здесь класса List у нас
было просто две переменные и три функции. По существу же код при этом не
отличается от того, что было в классе, и если решение будет предложено для того
кода, который был на доске, или любой другой реализации очереди, то такое
решение тоже будет принято).
Дополнительный вопрос для размышления №1
----------------------------------------
Как будет вести себя ваша функция pop для списка из одного элемента? Из нуля элементов?
Дополнительный вопрос для размышления №2
----------------------------------------
Зачем нам понадобился второй класс, ListEnd? Почему нельзя было просто, как и в односвязных списках, воткнуть на
конце списка None?