Как выполнить это задание?
Задание 2.1.14
В заключение вам предстоит реализовать двусвязный список, хранящий значения типа int. Требуется поддержать операции get, set, pushFront (вставка в начало листа), pushBack (вставка в конец), popFront (удаление с начала), popBack (удаление с конца), front (элемент в начале), back (элемент в конце).
Для решения задания воспользуйтесь формами ниже (первая — для C++, вторая — для Java, третья — для Python).
для выполнения задания используется https://codeboard.io
Вот пример реализации двусвязного списка на Python, который включает все необходимые операции: class Node:
def __init__(self, value):
self.value = value
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def pushFront(self, value):
new_node = Node(value)
if not self.head:
self.head = self.tail = new_node
else:
new_ node.next = self.head
self.head.prev = new_node
self.head = new_node
def pushBack(self, value):
new_node = Node(value)
if not self.tail:
self.head = self.tail = new_node
else:
new_node.prev = self.tail
self.tail.next = new_node
self.tail = new_node
def popFront(self):
if not self.head:
return None
value = self.head.value
if self.head == self.tail:
self.head = self.tail = None
else:
self.head = self.head.next
self.head.prev = None
return value
def popBack(self):
if not self.tail:
return None
value = self.tail.value
if self.head == self.tail:
self.head = self.tail = None
else:
self.tail = self.tail.prev
self.tail.next = None
return value
def front(self):
return self.head.value if self.head else None
def back(self):
return self.tail.value if self.tail else None
def get(self, index):
current = self.head
for _ in range(index):
if current is None:
return None
current = current.next
return current.value if current else None
def set(self, index, value):
current = self.head
for _ in range(index):
if current is None:
return False
current = current.next
if current:
current.value = value
return True
return False