Queue and Stack
Queue and Stack
def __init__(self):
self.items = []
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
else:
raise IndexError("Queue is empty")
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
queue = Queue()
queue.enqueue(4)
queue.enqueue(12)
queue.enqueue(6)
queue.enqueue(10)
queue.enqueue(8)
queue.enqueue(15)
queue.enqueue(28)
print("Size:", queue.size())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Is Empty?", queue.is_empty())
queue.enqueue(40)
print("Size:", queue.size())
Solution:
Size: 7
Dequeued: 4
Dequeued: 12
Dequeued: 6
Dequeued: 10
Dequeued: 8
Dequeued: 15
Dequeued: 28
Is Empty? True
Size: 1
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Queue:
def __init__(self):
self.front = None
self.rear = None
def dequeue(self):
if not self.is_empty():
item = self.front.data
self.front = self.front.next
if self.front is None:
self.rear = None
return item
else:
raise IndexError("Queue is empty")
def is_empty(self):
return self.front is None
def size(self):
count = 0
current = self.front
while current:
count += 1
current = current.next
return count
queue = Queue()
queue.enqueue(4)
queue.enqueue(12)
queue.enqueue(6)
queue.enqueue(10)
queue.enqueue(8)
queue.enqueue(15)
queue.enqueue(28)
print("Size:", queue.size())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Dequeued:", queue.dequeue())
print("Is Empty?", queue.is_empty())
queue.enqueue(40)
print("Size:", queue.size())
Solution:
Size: 7
Dequeued: 4
Dequeued: 12
Dequeued: 6
Dequeued: 10
Dequeued: 8
Dequeued: 15
Dequeued: 28
Is Empty? True
Size: 1
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
raise IndexError("pop from an empty stack")
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
raise IndexError("peek from an empty stack")
def size(self):
return len(self.items)
# Example usage
stack = Stack()
stack.push(10)
stack.push(20)
stack.push(30)
Solution:
Top element: 30
Popped: 30
Size: 2