Bird
Raised Fist0
DSA Pythonprogramming~10 mins

Check if Stack is Empty or Full in DSA Python - Execution Trace

Choose your learning style10 modes available
Concept Flow - Check if Stack is Empty or Full
Start
↓
Check if stack pointer == -1?
↓
Stack is Empty
↓
Stack is Full
↓
End
We check the stack pointer to see if it is -1 (empty) or max_size-1 (full) to determine stack state.
Execution Sample
DSA Python
stack = []
max_size = 3
pointer = -1

# Check empty
is_empty = (pointer == -1)

# Check full
is_full = (pointer == max_size - 1)
This code checks if the stack is empty or full by comparing the pointer with -1 and max_size-1.
Execution Table
StepOperationPointer ValueCondition CheckedResultStack Visual
1Initial state-1pointer == -1True (Empty)[]
2Push element 'A'0pointer == -1False[A]
3Check if full0pointer == max_size-1 (2)False[A]
4Push element 'B'1pointer == max_size-1 (2)False[A, B]
5Push element 'C'2pointer == max_size-1 (2)True (Full)[A, B, C]
6Pop element1pointer == max_size-1 (2)False[A, B]
7Pop element0pointer == -1False[A]
8Pop element-1pointer == -1True (Empty)[]
9Check if full-1pointer == max_size-1 (2)False[]
💡 Operations stop after stack pointer returns to -1 (empty) and no more pushes are done.
Variable Tracker
VariableStartAfter Step 2After Step 4After Step 5After Step 6After Step 7After Step 8Final
pointer-101210-1-1
stack[][A][A, B][A, B, C][A, B][A][][]
Key Moments - 3 Insights
Why does the pointer start at -1 instead of 0?
Pointer at -1 means the stack is empty before any push. See Step 1 in execution_table where pointer == -1 means empty stack.
Why do we check pointer == max_size - 1 to know if stack is full?
Because pointer starts at -1 and increments with each push, max index is max_size - 1. Step 5 shows pointer == 2 (max_size-1) means full.
What happens if we try to push when stack is full?
Pointer won't increase beyond max_size - 1, so push should be blocked. Step 5 shows stack full at pointer 2, no further push allowed.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the pointer value after pushing element 'B'?
A0
B1
C2
D-1
💡 Hint
Check Step 4 in execution_table where 'Push element B' updates pointer.
At which step does the stack become full according to the execution_table?
AStep 3
BStep 4
CStep 5
DStep 6
💡 Hint
Look for 'True (Full)' result in the Result column.
If the pointer was initialized to 0 instead of -1, what would change in the empty check?
AEmpty check would be pointer == 0
BEmpty check would be pointer == -1
CEmpty check would be pointer == max_size - 1
DEmpty check would not be needed
💡 Hint
Refer to variable_tracker and concept_flow about pointer initialization and empty condition.
Concept Snapshot
Stack pointer starts at -1 meaning empty stack.
Push increments pointer, pop decrements.
Empty if pointer == -1.
Full if pointer == max_size - 1.
Check these conditions to know stack state.
Prevent push if full, pop if empty.
Full Transcript
This concept shows how to check if a stack is empty or full by using a pointer that tracks the top element index. The pointer starts at -1 when the stack is empty. When we push elements, the pointer increases by one each time. When the pointer reaches max_size - 1, the stack is full. We check if the pointer equals -1 to know if the stack is empty, and if it equals max_size - 1 to know if it is full. The execution table traces these pointer changes and stack states step by step, showing pushes and pops. Key moments clarify why pointer starts at -1 and why full check uses max_size - 1. The visual quiz tests understanding of pointer values and conditions. This helps beginners see how stack fullness and emptiness are tracked simply by pointer comparisons.

Practice

(1/5)
1. What does the isEmpty() function check in a stack?
easy
A. If the stack has exactly one element
B. If the stack is full
C. If the stack has more than one element
D. If the stack has no elements

Solution

  1. Step 1: Understand the purpose of isEmpty()

    The isEmpty() function checks whether the stack contains any elements or not.
  2. Step 2: Identify what empty means for a stack

    An empty stack means it has zero elements, so isEmpty() returns true if no elements are present.
  3. Final Answer:

    If the stack has no elements -> Option D
  4. Quick Check:

    Empty stack means no elements = true [OK]
Hint: Empty stack means zero elements inside [OK]
Common Mistakes:
  • Confusing empty with full
  • Thinking it checks for one element
  • Assuming it checks for capacity
2. Which of the following is the correct syntax to check if a stack named stack is full in Python assuming max size is stored in max_size and current size in top?
easy
A. if top == max_size: print('Stack is full')
B. if top > max_size: print('Stack is full')
C. if top < max_size: print('Stack is full')
D. if top != max_size: print('Stack is full')

Solution

  1. Step 1: Understand stack full condition

    A stack is full when the current top index equals the maximum allowed size.
  2. Step 2: Match condition with syntax

    The correct check is top == max_size to confirm fullness.
  3. Final Answer:

    if top == max_size: print('Stack is full') -> Option A
  4. Quick Check:

    Full stack when top equals max size [OK]
Hint: Full stack means top equals max size [OK]
Common Mistakes:
  • Using greater than instead of equal
  • Using less than for full check
  • Using not equal instead of equal
3. What will be the output of the following code?
class Stack:
    def __init__(self, max_size):
        self.stack = []
        self.max_size = max_size
    def isFull(self):
        return len(self.stack) == self.max_size
    def isEmpty(self):
        return len(self.stack) == 0

s = Stack(2)
s.stack.append(10)
s.stack.append(20)
print(s.isFull())
print(s.isEmpty())
medium
A. False\nTrue
B. True\nTrue
C. True\nFalse
D. False\nFalse

Solution

  1. Step 1: Check stack contents after append

    Two elements (10, 20) are added, so length is 2 which equals max_size.
  2. Step 2: Evaluate isFull and isEmpty

    isFull() returns True because length equals max_size; isEmpty() returns False because stack is not empty.
  3. Final Answer:

    True False -> Option C
  4. Quick Check:

    Stack full = True, empty = False [OK]
Hint: Full if length equals max size; empty if length zero [OK]
Common Mistakes:
  • Confusing isFull and isEmpty return values
  • Ignoring stack length after append
  • Assuming stack is empty after append
4. Find the error in the following code that checks if a stack is empty:
class Stack:
    def __init__(self):
        self.stack = []
    def isEmpty(self):
        if self.stack == 0:
            return True
        else:
            return False

s = Stack()
print(s.isEmpty())
medium
A. Missing return statement in isEmpty
B. Comparing list to integer zero causes error
C. Stack initialization is incorrect
D. Print statement syntax is wrong

Solution

  1. Step 1: Analyze the isEmpty condition

    The code compares self.stack == 0, but self.stack is a list, not a number.
  2. Step 2: Identify correct way to check empty list

    To check if list is empty, use len(self.stack) == 0 or simply not self.stack.
  3. Final Answer:

    Comparing list to integer zero causes error -> Option B
  4. Quick Check:

    List cannot be compared to number 0 [OK]
Hint: Check list emptiness with length or not operator [OK]
Common Mistakes:
  • Comparing list directly to 0
  • Forgetting list length check
  • Using wrong comparison operator
5. You have a stack with max size 3. After pushing 3 elements, you pop one element and then check if the stack is full or empty. What will be the correct output of isFull() and isEmpty() methods?
class Stack:
    def __init__(self, max_size):
        self.stack = []
        self.max_size = max_size
    def push(self, val):
        if len(self.stack) < self.max_size:
            self.stack.append(val)
    def pop(self):
        if not self.isEmpty():
            return self.stack.pop()
    def isFull(self):
        return len(self.stack) == self.max_size
    def isEmpty(self):
        return len(self.stack) == 0

s = Stack(3)
s.push(1)
s.push(2)
s.push(3)
s.pop()
print(s.isFull())
print(s.isEmpty())
hard
A. False\nFalse
B. True\nFalse
C. False\nTrue
D. True\nTrue

Solution

  1. Step 1: Track stack size after operations

    Initially push 3 elements, stack size = 3 (full). After pop, size reduces to 2.
  2. Step 2: Evaluate isFull and isEmpty

    Since size is 2 and max_size is 3, isFull() returns False. Stack is not empty, so isEmpty() returns False.
  3. Final Answer:

    False False -> Option A
  4. Quick Check:

    Stack size 2 < max size 3, not empty [OK]
Hint: Pop reduces size; full only if size equals max [OK]
Common Mistakes:
  • Assuming stack is still full after pop
  • Assuming stack is empty after pop
  • Ignoring size changes after pop
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard