Check if Stack is Empty or Full in DSA Java - Time & Space Complexity
Checking if a stack is empty or full is a common operation in stack data structures.
We want to know how fast these checks happen as the stack size changes.
Analyze the time complexity of the following code snippet.
public class Stack {
private int[] arr;
private int top;
private int capacity;
public Stack(int size) {
arr = new int[size];
capacity = size;
top = -1;
}
public boolean isEmpty() {
return top == -1;
}
public boolean isFull() {
return top == capacity - 1;
}
}
This code defines a stack and checks if it is empty or full by comparing the top index.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Simple comparison of the top index with fixed values.
- How many times: Each check runs once per call, no loops or recursion involved.
These checks do not depend on the stack size; they always do the same small work.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 comparison |
| 100 | 1 comparison |
| 1000 | 1 comparison |
Pattern observation: The number of operations stays the same no matter how big the stack is.
Time Complexity: O(1)
This means the check happens instantly, no matter how many items are in the stack.
[X] Wrong: "Checking if the stack is full or empty takes longer as the stack grows."
[OK] Correct: These checks only compare numbers and do not look through the stack, so their speed does not change with size.
Knowing that these checks are very fast helps you focus on more complex stack operations during interviews.
"What if the stack was implemented using a linked list instead of an array? How would the time complexity of these checks change?"
Practice
isEmpty() method in a stack typically check?Solution
Step 1: Understand the purpose of
TheisEmpty()isEmpty()method checks whether the stack contains any elements or not.Step 2: Identify the condition checked
If the stack has no elements, it is empty, soisEmpty()returns true.Final Answer:
If the stack has no elements -> Option CQuick Check:
Empty stack means no elements = true [OK]
- Confusing isEmpty() with isFull()
- Thinking isEmpty() checks for one element
- Assuming isEmpty() checks initialization
stack is full in Java?Solution
Step 1: Identify the standard method name for full check
In stack implementations, the method to check if the stack is full is usually namedisFull().Step 2: Match the correct syntax
The correct syntax to call this method on a stack object namedstackisstack.isFull();.Final Answer:
stack.isFull(); -> Option BQuick Check:
Method to check full = isFull() [OK]
- Using isEmpty() to check full
- Using non-existent methods like full()
- Misspelling method names
class Stack {
int maxSize = 3;
int top = -1;
int[] arr = new int[maxSize];
boolean isFull() {
return top == maxSize - 1;
}
boolean isEmpty() {
return top == -1;
}
void push(int val) {
if (!isFull()) {
arr[++top] = val;
System.out.println("Pushed " + val);
} else {
System.out.println("Stack is full");
}
}
}
public class Main {
public static void main(String[] args) {
Stack stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
}
}Solution
Step 1: Trace push operations and stack state
Initially,top = -1. Each push incrementstopand adds value if stack not full. Max size is 3, so max top index is 2.Step 2: Check each push call
Push 10: top becomes 0, prints "Pushed 10".
Push 20: top becomes 1, prints "Pushed 20".
Push 30: top becomes 2, prints "Pushed 30".
Push 40: top is 2 (full), so prints "Stack is full".Final Answer:
Pushed 10 Pushed 20 Pushed 30 Stack is full -> Option AQuick Check:
Stack max size 3, 4th push fails [OK]
- Assuming push always succeeds
- Ignoring top index limits
- Confusing isEmpty() with isFull()
public boolean isEmpty() {
if (top == 0) {
return true;
} else {
return false;
}
}Solution
Step 1: Understand stack empty condition
In stack, empty means no elements pushed, sotopis usually-1.Step 2: Identify incorrect condition
The code checkstop == 0, which means one element is present, so it is wrong for empty check.Final Answer:
The condition should betop == -1to check empty -> Option DQuick Check:
Empty stack top = -1 [OK]
- Checking top == 0 for empty
- Confusing full and empty conditions
- Returning wrong boolean values
top = 3. Which of the following statements is true about the stack's state?Solution
Step 1: Understand stack indexing and size
Stack max size is 5, so valid top indices are 0 to 4.top = 3means 4 elements are present (indices 0,1,2,3).Step 2: Determine if stack is full or empty
Full meanstop == maxSize - 1which is 4 here, so not full.
Empty meanstop == -1, so not empty.
Therefore, stack is neither full nor empty.Final Answer:
The stack is neither full nor empty -> Option AQuick Check:
top=3, maxSize=5 means partial fill [OK]
- Assuming top=3 means full
- Confusing top index with element count
- Thinking top=3 means empty
Ready to prove it?
Pass the test and this pattern moves unknown
