Kodomo

Пользователь

Отображение текста в формате 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?