Реализован двусвязный список на python и протестирован.
Код оформлен в виде класса DoubleLinkedList со следующими методами:
push(elem) добавляет элемент в конец списка
pop() убирает элемент из конца списка
unshift(elem) добавляет элемент в начало списка
shift() убирает элемент из начала списка
len() возвращает длину списка
delete(elem) удаляет элемент из списка
contains(elem) проверяет, входит ли элемент в список
first() возвращает первый Item в списке
last() возвращает последний Item в списке
Отдельный элемент списка хранится внутри класса Item со следующими свойствами:
next__item следующий Item
prev__item предыдущий Item
elem элемент текущего Item
Внимание (!) выше указаны не сигнатуры методов, а только общее описание. Тесты проверяют работу всех указанных методов и особенно в граничных случаях, например пустой список или список из одного элемента.
Чтобы запустить проект необходимо:
git clone https://github.com/denisstasyev/DoubleLinkedList
python3 -m unittest tests/test_double_linked_list.py