Stacks and queues are fundamental linear data structures used in a wide range of programming problems. In Python, you can implement them easily using built-in data structures like lists or collections.
๐ฅ Stack (LIFO - Last In, First Out)
โ
Operations: push()
, pop()
, peek()
, is_empty()
๐ง Stack Implementation Using List
python
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
return None
def peek(self):
if not self.is_empty():
return self.items[-1]
return None
def is_empty(self):
return len(self.items) == 0
def print_stack(self):
print(self.items)
๐งช Stack Usage
python
s = Stack()
s.push(10)
s.push(20)
s.print_stack() # [10, 20]
print(s.peek()) # 20
s.pop()
s.print_stack() # [10]
๐ค๏ธ Queue (FIFO - First In, First Out)
โ
Operations: enqueue()
, dequeue()
, peek()
, is_empty()
๐ง Queue Implementation Using collections.deque
python
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not self.is_empty():
return self.queue.popleft()
return None
def peek(self):
if not self.is_empty():
return self.queue[0]
return None
def is_empty(self):
return len(self.queue) == 0
def print_queue(self):
print(list(self.queue))
๐งช Queue Usage
python
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.print_queue() # [1, 2, 3]
q.dequeue()
q.print_queue() # [2, 3]
print(q.peek()) # 2
๐ Summary
StructureAccess OrderMain OperationsStackLIFOpush()
, pop()
, peek()
QueueFIFOenqueue()
, dequeue()
, peek()
Both stacks and queues are essential for solving problems involving undo mechanisms, tree/graph traversals, task scheduling, and more.