Bird
Raised Fist0
DSA Goprogramming~10 mins

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

Choose your learning style10 modes available
Concept Flow - Check if Stack is Empty or Full
Start
↓
Check if top == -1?
Yes→Stack is Empty
|No↓
Check if top == capacity-1?
Yes→Stack is Full
|No↓
Stack is Neither Empty Nor Full
↓
End
The flow checks the top pointer of the stack to decide if it is empty (top == -1) or full (top == capacity-1).
Execution Sample
DSA Go
capacity := 3
stack := make([]int, capacity)
top := -1

// Check empty
isEmpty := (top == -1)
// Check full
isFull := (top == capacity-1)
This code initializes a stack and checks if it is empty or full by comparing the top index.
Execution Table
StepOperationtop ValuecapacityIs Empty?Is Full?Visual Stack State
1Initialize stack-13TrueFalse[] (empty)
2Push 1003FalseFalse[10]
3Push 2013FalseFalse[10 -> 20]
4Push 3023FalseTrue[10 -> 20 -> 30]
5Check empty/full23FalseTrue[10 -> 20 -> 30]
6Pop one element13FalseFalse[10 -> 20]
7Pop all elements-13TrueFalse[] (empty)
8Check empty/full-13TrueFalse[] (empty)
💡 Execution stops after checking empty/full states post push/pop operations.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 6After Step 7Final
top-10121-1-1
capacity3333333
stack[][10][10, 20][10, 20, 30][10, 20][][]
isEmptyTrueFalseFalseFalseFalseTrueTrue
isFullFalseFalseFalseTrueFalseFalseFalse
Key Moments - 3 Insights
Why is top initialized to -1 instead of 0?
Top is -1 to indicate the stack is empty before any push. See Step 1 in execution_table where top = -1 means empty stack.
Why does the stack become full when top == capacity - 1?
Because top starts at 0 for first element, when top reaches capacity-1, stack is full. See Step 4 where top=2 and capacity=3 means full stack.
What happens to isEmpty and isFull after popping all elements?
After popping all, top returns to -1, so isEmpty becomes True and isFull becomes False. See Step 7 and 8.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 4, what is the value of isFull?
ATrue
BFalse
CUndefined
DDepends on stack content
💡 Hint
Check the 'Is Full?' column at Step 4 in execution_table.
At which step does the stack become empty again after pushing elements?
AStep 6
BStep 7
CStep 5
DStep 3
💡 Hint
Look at the 'Is Empty?' column and 'top' value in execution_table.
If capacity was increased to 4, what would be the isFull value at Step 4?
ATrue
BDepends on top
CFalse
DCannot determine
💡 Hint
Compare top and capacity-1 condition in concept_flow and variable_tracker.
Concept Snapshot
Stack uses a 'top' pointer to track last element.
Empty stack: top == -1.
Full stack: top == capacity - 1.
Check these conditions to know stack state.
Push increments top; pop decrements top.
Capacity is fixed size of stack array.
Full Transcript
This concept shows how to check if a stack is empty or full by using the 'top' pointer. Initially, top is -1 meaning empty stack. When top equals capacity minus one, the stack is full. We traced pushing elements which increments top, and popping which decrements top. The execution table shows stack states step-by-step, confirming when isEmpty and isFull flags change. This helps understand stack boundary conditions clearly.

Practice

(1/5)
1. What does the IsEmpty() function check in a stack data structure?
easy
A. If the stack has no elements inside
B. If the stack is full and cannot add more elements
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() 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 inside, so no items to pop or peek.
  3. Final Answer:

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

    IsEmpty() means stack is empty = true [OK]
Hint: Empty means zero elements inside stack [OK]
Common Mistakes:
  • Confusing empty with full
  • Thinking empty means one element
  • Mixing IsEmpty with IsFull
2. Which of the following is the correct Go syntax to check if a stack is full when using a fixed size array?
easy
A. if len(stack) == 0 { /* stack is full */ }
B. if top > len(stack) { /* stack is full */ }
C. if top == len(stack) - 1 { /* stack is full */ }
D. if top == 0 { /* stack is full */ }

Solution

  1. Step 1: Understand stack indexing in Go

    For a fixed size array stack, top points to the last filled index. The last valid index is length - 1.
  2. Step 2: Check condition for full stack

    When top equals len(stack) - 1, the stack is full because no more elements can be added.
  3. Final Answer:

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

    top == max index means full [OK]
Hint: Full means top equals last index (length - 1) [OK]
Common Mistakes:
  • Using > instead of == for full check
  • Checking if top == 0 for full
  • Confusing length with top index
3. Given the following Go code, what will be printed?
type Stack struct {
    items []int
    top   int
}

func (s *Stack) IsEmpty() bool {
    return s.top == -1
}

func main() {
    s := Stack{items: make([]int, 5), top: -1}
    fmt.Println(s.IsEmpty())
    s.top = 4
    fmt.Println(s.IsEmpty())
}
medium
A. true\nfalse
B. false\ntrue
C. false\nfalse
D. true\ntrue

Solution

  1. Step 1: Check initial top value and IsEmpty() result

    Initially, top is -1, so IsEmpty() returns true because stack is empty.
  2. Step 2: Update top to 4 and check IsEmpty() again

    After setting top to 4, IsEmpty() returns false because stack now has elements.
  3. Final Answer:

    true\nfalse -> Option A
  4. Quick Check:

    top -1 means empty true, top 4 means not empty false [OK]
Hint: top -1 means empty, any other top means not empty [OK]
Common Mistakes:
  • Assuming top 4 means empty
  • Confusing slice length with top
  • Ignoring initial top value
4. Find the error in this Go code snippet that checks if a stack is full:
func (s *Stack) IsFull() bool {
    return s.top == len(s.items)
}
medium
A. The function should return 's.top > len(s.items)' instead
B. The condition should be 's.top == len(s.items) - 1' to check full correctly
C. The function should check if 's.top == 0' to be full
D. No error, the code is correct

Solution

  1. Step 1: Understand stack indexing for full condition

    Stack top index starts at -1 and max valid index is length - 1.
  2. Step 2: Identify correct full condition

    Full means top equals last valid index, which is len(s.items) - 1, not len(s.items).
  3. Final Answer:

    The condition should be 's.top == len(s.items) - 1' to check full correctly -> Option B
  4. Quick Check:

    Full means top == max index (length - 1) [OK]
Hint: Full means top equals last index, not length [OK]
Common Mistakes:
  • Using length instead of length - 1
  • Checking top == 0 for full
  • Returning wrong boolean condition
5. You have a stack implemented with a fixed size array of length 3 and a top index starting at -1. After pushing two elements, you pop one element, then push two more elements. Which statement about the stack state is correct?
hard
A. The stack is empty and top index is -1
B. The stack is not full and top index is 1
C. The stack is full but top index is 3
D. The stack is full and top index is 2

Solution

  1. Step 1: Track stack operations and top index changes

    Start: top = -1 (empty). Push two elements: top = 1. Pop one element: top = 0. Push two elements: top = 2 (max index for length 3).
  2. Step 2: Determine if stack is full

    Since top = 2 and max index is 2 (length 3 - 1), stack is full.
  3. Final Answer:

    The stack is full and top index is 2 -> Option D
  4. Quick Check:

    Push/pop changes top; top 2 means full for size 3 [OK]
Hint: Track top index after each push/pop carefully [OK]
Common Mistakes:
  • Assuming top can be 3 for full
  • Forgetting pop decreases top
  • Confusing empty with full states
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