Check if Stack is Empty or Full in DSA C# - 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 run as the stack size changes.
Analyze the time complexity of the following code snippet.
public class Stack {
private int[] items;
private int top = -1;
private int capacity;
public Stack(int size) {
items = new int[size];
capacity = size;
}
public bool IsEmpty() {
return top == -1;
}
public bool 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 operations in IsEmpty() and IsFull() methods.
- How many times: Each check runs once per call, no loops or recursion involved.
Checking if the stack is empty or full always takes the same amount of time, no matter the stack size.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 comparison |
| 100 | 1 comparison |
| 1000 | 1 comparison |
Pattern observation: The number of operations stays the same regardless of input size.
Time Complexity: O(1)
This means the check runs instantly no matter how big the stack is.
[X] Wrong: "Checking if a stack is full or empty takes longer as the stack grows."
[OK] Correct: These checks only compare a number, so they always take the same short time.
Knowing that simple checks like empty or full run instantly shows you understand stack basics well.
"What if the stack was implemented using a linked list instead of an array? How would the time complexity of checking if it is full change?"
Practice
IsEmpty() method typically check in a stack data structure?Solution
Step 1: Understand the purpose of IsEmpty()
TheIsEmpty()method checks whether the stack contains any elements or not.Step 2: Interpret the meaning of empty stack
An empty stack means it has zero elements inside, so no items to pop or peek.Final Answer:
If the stack has no elements inside -> Option AQuick Check:
IsEmpty() = true means stack is empty [OK]
- Confusing empty with full
- Thinking IsEmpty checks for one element
- Assuming IsEmpty checks capacity
myStack is full assuming it has a fixed size?Solution
Step 1: Understand stack properties in C#
A stack with fixed size usesCountfor current elements andCapacityfor max size.Step 2: Check if stack is full
IfCountequalsCapacity, the stack is full and cannot add more elements.Final Answer:
if (myStack.Count == myStack.Capacity) { } -> Option AQuick Check:
Count == Capacity means full stack [OK]
- Using IsEmpty() to check full
- Checking Length property which stacks don't have
- Using IsFull() without defining it
Stack<int> stack = new Stack<int>(3); stack.Push(10); stack.Push(20); stack.Push(30); bool isFull = stack.Count == 3; bool isEmpty = stack.Count == 0; Console.WriteLine(isFull); Console.WriteLine(isEmpty);
What will be the output?
Solution
Step 1: Analyze stack operations
Three elements (10, 20, 30) are pushed into a stack with capacity 3, so stack is full.Step 2: Evaluate isFull and isEmpty values
isFull = stack.Count == 3 is true; isEmpty = stack.Count == 0 is false.Final Answer:
True\nFalse -> Option BQuick Check:
Count=3 means full=true, empty=false [OK]
- Assuming stack is empty after pushes
- Confusing isFull and isEmpty values
- Ignoring stack capacity
Stack<int> stack = new Stack<int>();
if (stack.IsFull()) {
Console.WriteLine("Stack is full");
}What is the error and how to fix it?
Solution
Step 1: Identify the error
TheIsFull()method is not defined in C# Stack class, causing a compile error.Step 2: Correct the check for full stack
Usestack.Count == capacityto check if stack is full, since Stack has no IsFull() method.Final Answer:
IsFull() method does not exist; use stack.Count == capacity instead -> Option CQuick Check:
No IsFull() method in Stack class [OK]
- Assuming IsFull() exists by default
- Using IsEmpty() to check full
- Changing data structure unnecessarily
Solution
Step 1: Understand stack capacity and current count
Stack capacity is 5, current count is 3, so 2 more pushes are possible if total does not exceed 5.Step 2: Formulate condition to check safe push
Check if current count plus 2 is less than or equal to capacity:stack.Count + 2 <= 5.Final Answer:
if (stack.Count + 2 <= 5) { /* safe to push */ } -> Option DQuick Check:
Count + pushes ≤ capacity means safe [OK]
- Using IsEmpty() to check push safety
- Checking count equals capacity incorrectly
- Subtracting pushes instead of adding
Ready to prove it?
Pass the test and this pattern moves unknown
