DEV Community

Cover image for Stack in python
Dana
Dana

Posted on

Stack in python

A stack is a linear data structure that follows the principle of Last In First Out (LIFO) This means the last element inserted inside the stack is removed first.

LIFO Principle of Stack:

  • putting an item on top of the stack is called push.
  • removing an item is called pop.

Stack Push and Pop Operations

Basic Operations of Stack:

  • Push: Add an element to the top of a stack.
  • Pop: Remove an element from the top of a stack.
  • IsEmpty: Check if the stack is empty.
  • IsFull: Check if the stack is full.
  • Peek: Get the value of the top element without removing it.

Working of Stack Data Structure:

  • A pointer called TOP is used to keep track of the top element in the stack.
  • When initializing the stack, we set its value to -1 so that we can check if the stack is empty by comparing TOP == -1.
  • On pushing an element, we increase the value of TOP and place the new element in the position pointed to by TOP.
  • On popping an element, we return the element pointed to by TOP and reduce its value.
  • Before pushing, we check if the stack is already full.
  • Before popping, we check if the stack is already empty.

So,

  • empyty stack => (empty bottle) => top = -1
  • stack[1] => (push = 1) => top = 0
  • stack[2] => (push = 2) => top = 1
  • stack[3] => (push = 3) => top = 2
  • return stack[2] => (pop = 3) => top = 1

Working of Stack Data Structure

Stack Implementations in Python

"""Stack code."""


def create_stack():
    """Creating a stack."""
    stack = []
    return stack


def check_empty(stack):
    """Creating an empty stack."""
    return len(stack) == 0


def push(stack, item):
    """Adding items into the stack."""
    stack.append(item)
    print("Pushing item " + item)


def pop(stack):
    """Removing an element from the stack."""
    if check_empty(stack):
        """Check for empty stack."""
        return "stack is empty"

    return stack.pop()


stack = create_stack()
push(stack, str(1))
push(stack, str(2))
push(stack, str(3))
push(stack, str(4))
push(stack, str(5))

print("popped item: " + pop(stack))
print("stack after popping an elements " + str(stack))


Enter fullscreen mode Exit fullscreen mode

the output

Pushing item 1
Pushing item 2
Pushing item 3
Pushing item 4
Pushing item 5
popped item: 5
stack after popping an elements ['1', '2', '3', '4']
Enter fullscreen mode Exit fullscreen mode

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay