Stack: Array Implementation

Explore how a stack data structure works using array implementation. Watch push, pop, and peek operations in action with LIFO (Last In, First Out) principle.

Interactive Operations
Array Implementation
O(1) Operations

Stack Visualization

0
1
2
3
4
5
6
7
Size: 0 / 8
Status: Empty

Current Step:

Select an operation to begin visualization

Complexity Analysis

O(1)
Push
O(1)
Pop
O(1)
Peek
O(n) Space
Fixed array allocation

Stack Operations

Push

Add element to the top of stack

Pop

Remove and return top element

Peek/Top

View top element without removing

Applications

Function Calls: Managing function call stack
Undo Operations: Ctrl+Z functionality
Expression Evaluation: Parsing mathematical expressions
Browser History: Back button functionality
Syntax Checking: Matching parentheses/brackets

Implementation

class StackArray:
    def __init__(self, max_size):
        self.array = [None] * max_size  # Fixed-size array
        self.top = -1                   # Index of top element
        self.max_size = max_size       # Maximum capacity
    
    def push(self, value):
        # Check for stack overflow
        if self.top >= self.max_size - 1:
            raise Exception("Stack Overflow")
        
        # Increment top and add element
        self.top += 1
        self.array[self.top] = value
        return value
    
    def pop(self):
        # Check for stack underflow
        if self.top < 0:
            raise Exception("Stack Underflow")
        
        # Get top element and decrement top
        value = self.array[self.top]
        self.array[self.top] = None  # Optional: clear the slot
        self.top -= 1
        return value
    
    def peek(self):
        # Check if stack is empty
        if self.top < 0:
            raise Exception("Stack is Empty")
        
        return self.array[self.top]
    
    def is_empty(self):
        return self.top < 0
    
    def is_full(self):
        return self.top >= self.max_size - 1
    
    def size(self):
        return self.top + 1