Double_Ended_Queue_Algorithm
Double_Ended_Queue_Algorithm
Initialize
Traversal (`traverse()`)
class Deque:
def __init__(self, capacity):
self.capacity = capacity
self.size = 0
self.front = -1
self.rear = -1
self.data = [None] * capacity
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size == self.capacity
def pop_front(self):
if self.is_empty():
print("Deque is empty")
return None
result = self.data[self.front]
if self.size == 1:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.capacity
self.size -= 1
return result
def pop_back(self):
if self.is_empty():
print("Deque is empty")
return None
result = self.data[self.rear]
if self.size == 1:
self.front = self.rear = -1
else:
self.rear = (self.rear - 1 + self.capacity) % self.capacity
self.size -= 1
return result
def peek_front(self):
if self.is_empty():
print("Deque is empty")
return None
return self.data[self.front]
def peek_back(self):
if self.is_empty():
print("Deque is empty")
return None
return self.data[self.rear]
def traverse(self):
if self.is_empty():
print("Deque is empty")
return
i = self.front
for _ in range(self.size):
print(self.data[i], end=" ")
i = (i + 1) % self.capacity
print()
# Example Usage
deque = Deque(5)
deque.push_back(10)
deque.push_front(20)
deque.push_back(30)
deque.traverse() # Output: 20 10 30
deque.pop_front()
deque.traverse() # Output: 10 30
class Deque:
def __init__(self, capacity):
self.capacity = capacity
self.size = 0
self.front = -1
self.rear = -1
self.data = [None] * capacity
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size == self.capacity
def pop_front(self):
if self.is_empty():
print("Deque is empty")
return None
result = self.data[self.front]
if self.size == 1:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.capacity
self.size -= 1
return result
def pop_back(self):
if self.is_empty():
print("Deque is empty")
return None
result = self.data[self.rear]
if self.size == 1:
self.front = self.rear = -1
else:
self.rear = (self.rear - 1 + self.capacity) % self.capacity
self.size -= 1
return result
def peek_front(self):
if self.is_empty():
print("Deque is empty")
return None
return self.data[self.front]
def peek_back(self):
if self.is_empty():
print("Deque is empty")
return None
return self.data[self.rear]
def traverse(self):
if self.is_empty():
print("Deque is empty")
return
i = self.front
for _ in range(self.size):
print(self.data[i], end=" ")
i = (i + 1) % self.capacity
print()
# Example Usage
deque = Deque(5)
deque.push_back(10)
deque.push_front(20)
deque.push_back(30)
deque.traverse() # Output: 20 10 30
deque.pop_front()
deque.traverse() # Output: 10 30