Bird
0
0
DSA Cprogramming~10 mins

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

Choose your learning style9 modes available
Concept Flow - Check if Stack is Empty or Full
Start
Check if top == -1?
YesStack is Empty
|No
Check if top == max_size-1?
YesStack is Full
|No
Stack has space
End
The flow checks the top pointer to decide if the stack is empty or full, then concludes the stack state.
Execution Sample
DSA C
int isEmpty() {
  return top == -1;
}

int isFull() {
  return top == max_size - 1;
}
This code checks if the stack is empty or full by comparing the top index with boundary values.
Execution Table
StepOperationtop Valuemax_sizeCondition CheckedResultStack Visual State
1Initial state-15top == -1True[] (empty)
2Check isEmpty()-15top == -1True[] (empty)
3Push 1005top == -1?No[10]
4Check isEmpty()05top == -1False[10]
5Push 2015top == max_size-1 (4)?No[10, 20]
6Push 3025top == max_size-1 (4)?No[10, 20, 30]
7Push 4035top == max_size-1 (4)?No[10, 20, 30, 40]
8Push 5045top == max_size-1 (4)?Yes[10, 20, 30, 40, 50]
9Check isFull()45top == max_size-1 (4)True[10, 20, 30, 40, 50]
10Attempt Push 6045top == max_size-1 (4)?Yes - Cannot push[10, 20, 30, 40, 50]
11Pop35top == -1?No[10, 20, 30, 40]
12Check isFull()35top == max_size-1 (4)?No[10, 20, 30, 40]
13Check isEmpty()35top == -1?No[10, 20, 30, 40]
14Pop all to empty-15top == -1?Yes[] (empty)
15Check isEmpty()-15top == -1?True[] (empty)
💡 Execution stops after stack is empty and checks confirm empty state.
Variable Tracker
VariableStartAfter Step 3After Step 5After Step 6After Step 7After Step 8After Step 9After Step 11After Step 14
top-10123443-1
max_size555555555
Stack[][10][10, 20][10, 20, 30][10, 20, 30, 40][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40][]
Key Moments - 3 Insights
Why does the stack start with top = -1 instead of 0?
Because top = -1 means the stack is empty (no elements). This is shown in execution_table step 1 where top == -1 means empty stack.
Why do we check top == max_size - 1 to know if the stack is full?
Because top points to the last filled index. When top equals max_size - 1, the stack has no space left, as shown in step 8 and 9.
What happens if we try to push when the stack is full?
The push operation is blocked and top does not change, as shown in step 10 where top remains 4 and stack state is unchanged.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the top value after pushing 30 (step 6)?
A1
B2
C3
D4
💡 Hint
Check the 'top Value' column at step 6 in execution_table.
At which step does the stack become full?
AStep 8
BStep 7
CStep 9
DStep 10
💡 Hint
Look for when 'top == max_size-1' condition becomes True in execution_table.
If max_size was 3 instead of 5, at which step would the stack be full?
AStep 7
BStep 5
CStep 6
DStep 8
💡 Hint
max_size-1 would be 2, so top == 2 means full; check when top reaches 2 in variable_tracker.
Concept Snapshot
Stack uses 'top' index to track elements.
Empty stack: top == -1.
Full stack: top == max_size - 1.
Check empty/full by comparing top.
Push increments top if not full.
Pop decrements top if not empty.
Full Transcript
This concept shows how to check if a stack is empty or full by using the 'top' index. The stack starts empty with top = -1. When top equals max_size - 1, the stack is full. The code checks these conditions to prevent invalid push or pop operations. The execution table traces pushing elements until full, checking empty and full states, and popping elements back to empty. Variable tracker shows how 'top' and stack contents change step-by-step. Key moments clarify why top starts at -1 and how full condition is detected. The quiz tests understanding of top values and full condition steps.