forked from ndleah/python-mini-project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinked_deque.py
34 lines (24 loc) · 953 Bytes
/
linked_deque.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from doubly_linked_list import _DoublyLinkedList
class Empty(Exception):
pass
class LinkedDeque(_DoublyLinkedList):
def first(self):
if self.is_empty():
raise Empty("Dequeu is empty")
return self._header._next._element
def last(self):
if self.is_empty():
raise Empty("Dequeu is empty")
return self._trailer._previous._element
def insert_first(self, element):
self._insert_between(element, self._header, self._trailer)
def insert_last(self, element):
self._insert_between(element, self._trailer._previous, self._trailer)
def delete_first(self):
if self.is_empty():
raise Empty("Deque is empty")
return self._delete_node(self._header._next)
def delete_last(self):
if self.is_empty():
raise Empty("Deque is empty")
return self._delete_node(self._trailer._previous)