Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Check if Stack is Empty or Full in DSA Typescript - 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 [Check if stack pointer == max size - 1?
↓
Stack is Full
↓
End
We check the stack pointer to see if it is -1 (empty) or max size -1 (full). Otherwise, stack has space.
Execution Sample
DSA Typescript
class Stack {
  maxSize: number;
  top: number;
  items: number[];

  constructor(size: number) {
    this.maxSize = size;
    this.top = -1;
    this.items = [];
  }

  isEmpty(): boolean {
    return this.top === -1;
  }

  isFull(): boolean {
    return this.top === this.maxSize - 1;
  }
}
This code defines a stack with methods to check if it is empty or full by comparing the top pointer.
Execution Table
StepOperationStack Pointer (top)Max SizeCheck ConditionResultVisual Stack State
1Initialize stack-13top == -1?True[]
2Check isEmpty()-13top == -1?True[]
3Push 1003top == maxSize - 1? (0 == 2)False[10]
4Check isFull()03top == maxSize - 1? (0 == 2)False[10]
5Push 2013top == maxSize - 1? (1 == 2)False[10, 20]
6Push 3023top == maxSize - 1? (2 == 2)True[10, 20, 30]
7Check isFull()23top == maxSize - 1? (2 == 2)True[10, 20, 30]
8Pop13top == -1?False[10, 20]
9Check isEmpty()13top == -1?False[10, 20]
10Pop03top == -1?False[10]
11Pop-13top == -1?True[]
12Check isEmpty()-13top == -1?True[]
13Check isFull()-13top == maxSize - 1? (-1 == 2)False[]
💡 Stack pointer reaches -1 means empty; reaches maxSize-1 means full.
Variable Tracker
VariableStartAfter Step 3After Step 5After Step 6After Step 8After Step 11Final
top-10121-1-1
items[][10][10, 20][10, 20, 30][10, 20][][]
Key Moments - 3 Insights
Why does the stack pointer start at -1 instead of 0?
The pointer at -1 means the stack is empty (no elements). This is shown in execution_table row 1 and 2 where top == -1 means empty.
How do we know when the stack is full?
When the pointer equals maxSize - 1, the stack is full. See rows 6 and 7 where top == 2 for maxSize 3 means full.
What happens if we check isEmpty() after popping all elements?
After popping all, top returns to -1, so isEmpty() returns true. See rows 11 and 12.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 6, what is the stack pointer value?
A2
B1
C-1
D3
💡 Hint
Check the 'Stack Pointer (top)' column at step 6 in execution_table.
At which step does the stack become empty again after popping?
AStep 8
BStep 11
CStep 10
DStep 13
💡 Hint
Look for top == -1 in 'Stack Pointer (top)' column after pop operations.
At which step does isFull() return true?
AStep 6
BStep 8
CStep 7
DStep 9
💡 Hint
Look for the 'Check isFull()' operation with Result 'True'.
Concept Snapshot
Stack uses a pointer 'top' starting at -1.
Empty stack: top == -1.
Full stack: top == maxSize - 1.
isEmpty() checks top == -1.
isFull() checks top == maxSize - 1.
Push increments top; pop decrements top.
Full Transcript
This concept shows how to check if a stack is empty or full by using the stack pointer called 'top'. Initially, top is -1 meaning the stack is empty. When we add items, top increases. When top equals maxSize - 1, the stack is full. The methods isEmpty() and isFull() compare top to these values. The execution table traces these changes step by step, showing the stack contents and pointer after each operation. This helps understand when the stack can accept more items or is empty.

Practice

(1/5)
1. What does the isEmpty() method check in a stack data structure?
easy
A. If the stack is full and cannot add more elements
B. If the stack has no elements inside
C. If the stack has exactly one element
D. If the stack has more than one element

Solution

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

    The isEmpty() method is designed to check whether the stack contains any elements or not.
  2. Step 2: Interpret the meaning of empty stack

    An empty stack means it has zero elements inside, so isEmpty() returns true only when the stack is empty.
  3. Final Answer:

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

    isEmpty() checks for empty stack = A [OK]
Hint: Empty means zero elements inside the stack [OK]
Common Mistakes:
  • Confusing isEmpty() with isFull()
  • Thinking isEmpty() checks for one element
  • Assuming isEmpty() checks if stack is full
2. Which of the following is the correct TypeScript syntax to check if a stack is full when using an array with fixed size maxSize and current top index?
easy
A. if (top === maxSize - 1) { /* stack is full */ }
B. if (top === maxSize) { /* stack is full */ }
C. if (top > maxSize) { /* stack is full */ }
D. if (top < maxSize) { /* stack is full */ }

Solution

  1. Step 1: Understand stack indexing

    In a fixed size stack using an array, top starts at -1 and increments by 1 for each push. The last valid index is maxSize - 1.
  2. Step 2: Check condition for full stack

    The stack is full when top equals maxSize - 1, meaning no more space to add elements.
  3. Final Answer:

    if (top === maxSize - 1) { /* stack is full */ } -> Option A
  4. Quick Check:

    Full stack when top = maxSize - 1 [OK]
Hint: Stack full when top equals maxSize minus one [OK]
Common Mistakes:
  • Using top === maxSize (off by one error)
  • Checking top > maxSize (invalid index)
  • Using top < maxSize (means not full)
3. Consider this TypeScript code for a stack with maxSize 3:
class Stack {
  maxSize = 3;
  top = -1;
  items: number[] = [];

  isFull() {
    return this.top === this.maxSize - 1;
  }

  push(item: number) {
    if (!this.isFull()) {
      this.top++;
      this.items[this.top] = item;
    }
  }
}

const stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
console.log(stack.items);

What will be printed?
medium
A. [40, 20, 30]
B. [10, 20, 30, 40]
C. [10, 20, 30]
D. []

Solution

  1. Step 1: Trace push operations with isFull check

    Stack maxSize is 3, so top max is 2. Push 10: top=0, items[0]=10; Push 20: top=1, items[1]=20; Push 30: top=2, items[2]=30; Push 40: isFull() returns true (top=2), so push ignored.
  2. Step 2: Final stack items array

    After all pushes, items array is [10, 20, 30]. The 4th push does not add 40.
  3. Final Answer:

    [10, 20, 30] -> Option C
  4. Quick Check:

    Stack full at 3 items, 4th push ignored [OK]
Hint: Push stops when stack is full, extra items ignored [OK]
Common Mistakes:
  • Assuming push adds all items ignoring full check
  • Thinking array grows beyond maxSize
  • Confusing top index with array length
4. This TypeScript stack code tries to check if the stack is empty:
class Stack {
  top = -1;
  isEmpty() {
    return this.top === 0;
  }
}

What is wrong with this isEmpty() method?
medium
A. It should check if top is 1, not 0
B. It should check if top is less than 0
C. It should check if top is greater than 0
D. It should check if top is -1, not 0

Solution

  1. Step 1: Understand top index for empty stack

    In stack implementation, top is -1 when stack is empty (no elements pushed yet).
  2. Step 2: Identify incorrect condition

    The code checks top === 0, which means one element is present, so it wrongly returns true for non-empty stack.
  3. Final Answer:

    It should check if top is -1, not 0 -> Option D
  4. Quick Check:

    Empty stack means top = -1 [OK]
Hint: Empty stack top is -1, not zero [OK]
Common Mistakes:
  • Checking top === 0 means stack has one element
  • Using greater than or less than instead of equality
  • Confusing empty with single element condition
5. You have a stack with maxSize 5 and current top at 3. You want to write a method canPush() that returns true only if the stack is not full and not empty. Which condition correctly implements this?
hard
A. return this.top > -1 && this.top < this.maxSize - 1;
B. return this.top >= 0 && this.top <= this.maxSize - 1;
C. return this.top !== -1 && this.top !== this.maxSize;
D. return this.top > 0 && this.top < this.maxSize;

Solution

  1. Step 1: Define conditions for not empty and not full

    Not empty means top > -1 (at least one element). Not full means top < maxSize - 1 (space to add more).
  2. Step 2: Combine conditions logically

    Both conditions must be true, so use logical AND: top > -1 && top < maxSize - 1.
  3. Final Answer:

    return this.top > -1 && this.top < this.maxSize - 1; -> Option A
  4. Quick Check:

    Not empty and not full = top > -1 and top < maxSize - 1 [OK]
Hint: Check top between -1 and maxSize-1 exclusive [OK]
Common Mistakes:
  • Using >= or <= incorrectly allowing empty or full
  • Using !== which can fail for boundary values
  • Confusing maxSize with maxSize - 1
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