Stack Pop Operation



Pop Element from Stack

The pop operation in a stack involves removing the element from the top of the stack. This operation decreases the size of the stack by one and updates the top reference to the next element in the stack. Stacks follow a Last In, First Out (LIFO) principle, meaning the most recently added element is the first to be removed.


Step-by-Step Process

Consider a stack with the following structure before the pop operation:


Stack (Top -> Bottom):
Top -> 4 -> 3 -> 2 -> 1

To pop the top element from the stack, follow these steps:

  1. Check if the Stack is Empty: If the stack is empty, return an error or None.
  2. Store the Top Node: Store the current top node in a temporary variable.
  3. Update the Top Reference: Update the top reference to point to the next node in the stack.
  4. Return the Stored Node's Value: Return the value of the stored top node.

After performing these steps, the stack will have the following structure:


Stack (Top -> Bottom):
Top -> 3 -> 2 -> 1

Pseudo Code

Function pop(stack):
    # Check if the stack is empty
    If stack.top is null:
        Return None
    # Store the current top node
    temp = stack.top
    # Update the top reference to the next node
    stack.top = stack.top.next
    # Return the value of the stored top node
    Return temp.data

Python Program to Perform Stack Pop Operation

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class Stack:
    def __init__(self):
        self.top = None

    def push(self, data):
        # Create a new node with the given data
        new_node = Node(data)
        # Set the new node's next reference to the current top of the stack
        new_node.next = self.top
        # Update the top reference to the new node
        self.top = new_node

    def pop(self):
        # Check if the stack is empty
        if self.top is None:
            return None
        # Store the current top node
        temp = self.top
        # Update the top reference to the next node
        self.top = self.top.next
        # Return the value of the stored top node
        return temp.data

    def traverse(self):
        # Traverse and print the stack
        current = self.top
        while current:
            print(current.data, end=" -> ")
            current = current.next
        print("None")

# Example usage:
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
print("Stack before popping:")
stack.traverse()  # Output: 4 -> 3 -> 2 -> 1 -> None
popped_element = stack.pop()
print(f"Popped element: {popped_element}")  # Output: 4
print("Stack after popping:")
stack.traverse()  # Output: 3 -> 2 -> 1 -> None

This Python program defines a stack with methods for pushing elements onto the stack, popping elements from the stack, and traversing the stack. The pop method checks if the stack is empty, stores the current top node, updates the top reference, and returns the value of the stored top node.