📊 DSA Q12 / 28

What is a stack and what are its main operations?

AI-Powered Answer ✓ Answered

A stack is a fundamental linear data structure in computer science that follows a specific order for its operations: Last In, First Out (LIFO). This means the element most recently added to the stack will be the first one to be removed. Imagine a stack of plates where you can only add or remove plates from the top.

What is a Stack?

As an Abstract Data Type (ADT), a stack provides a set of operations without revealing its underlying implementation (which can be an array, linked list, etc.). The defining characteristic is its LIFO behavior, making it suitable for scenarios where the most recent item needs to be accessed first.

Main Operations of a Stack

Stacks typically support a minimal set of operations to manage their elements while strictly adhering to the LIFO principle.

Push (or Insert)

The push operation adds a new element to the top of the stack. If the stack has a predefined maximum capacity and is already full, attempting to push an element will result in a 'Stack Overflow' error.

pseudocode
function push(stack, item):
    if stack is full:
        throw 'Stack Overflow' error
    add item to the top of the stack
    increment stack size

Pop (or Delete)

The pop operation removes and returns the element currently at the top of the stack. If the stack is empty, attempting to pop an element will lead to a 'Stack Underflow' error.

pseudocode
function pop(stack):
    if stack is empty:
        throw 'Stack Underflow' error
    item = element at the top of stack
    remove element from top of stack
    decrement stack size
    return item

Peek (or Top)

The peek operation allows you to view the element at the top of the stack without removing it. This operation also requires the stack not to be empty.

pseudocode
function peek(stack):
    if stack is empty:
        throw 'Stack Underflow' error
    return element at the top of stack (without removal)

isEmpty

This boolean operation checks whether the stack currently contains any elements. It returns true if the stack is empty, and false otherwise.

pseudocode
function isEmpty(stack):
    return stack size == 0

Size

The size operation returns the total number of elements currently present in the stack.

pseudocode
function size(stack):
    return current number of elements in stack

Applications of Stacks

  • Function Call Stack: Manages function calls in computer programs, storing local variables and return addresses.
  • Undo/Redo Mechanisms: Commonly used in text editors and other software to store sequences of operations for easy reversal.
  • Expression Evaluation: Essential for converting infix expressions to postfix/prefix and evaluating them.
  • Backtracking Algorithms: Used in problems like maze solving or the N-Queens problem to keep track of previous states.
  • Browser History: The 'back' button in web browsers typically uses a stack to navigate through previously visited pages.
  • Syntax Parsing: Compilers use stacks to parse programming language syntax.

Time Complexity of Stack Operations

OperationTime Complexity (Average)Time Complexity (Worst)
PushO(1)O(1)
PopO(1)O(1)
PeekO(1)O(1)
isEmptyO(1)O(1)
SizeO(1)O(1)