What if you could see the top of your stack without touching it at all?
Why Peek Top Element of Stack in DSA Go?
Imagine you have a stack of books on your desk. You want to see the title of the book on the very top without removing it. If you had to take off all the books to find out, it would be slow and messy.
Manually removing each book to see the top one wastes time and risks messing up the order. It's easy to lose track or drop books, causing errors and frustration.
The peek operation lets you look at the top item instantly without changing the stack. It's like glancing at the top book's cover without moving anything, saving time and keeping everything neat.
if len(stack) > 0 { top := stack[len(stack)-1] stack = stack[:len(stack)-1] // removing top to see it fmt.Println(top) stack = append(stack, top) // putting it back }
if len(stack) > 0 { top := stack[len(stack)-1] // peek without removing fmt.Println(top) }
Peek makes it easy to check the current top item quickly without disturbing the stack's order.
When using a web browser's back button, peek helps check the last visited page without leaving it, so you can decide if you want to go back.
Manual checking of the top element is slow and risky.
Peek lets you see the top instantly without removing it.
This keeps the stack safe and operations efficient.
Practice
peek operation do in a stack?Solution
Step 1: Understand stack operations
A stack stores elements in a last-in, first-out order. Common operations include push (add), pop (remove), and peek (view top).Step 2: Define peek operation
Peek returns the top element without removing it, allowing you to see the current top without changing the stack.Final Answer:
Returns the top element without removing it -> Option AQuick Check:
Peek = View top element without removal [OK]
- Confusing peek with pop operation
- Thinking peek adds elements
- Assuming peek checks emptiness
stack?Solution
Step 1: Understand Go slice indexing
Go slices are zero-indexed. The last element is at index length-1.Step 2: Identify correct top element access
To peek top, access stack[len(stack)-1]. Using len(stack) is out of range, 0 is bottom, and negative index is invalid.Final Answer:
top := stack[len(stack)-1] -> Option AQuick Check:
Last element index = length-1 [OK]
- Using len(stack) as index (out of range)
- Using negative index (not supported in Go)
- Accessing stack[0] which is bottom
stack := []int{10, 20, 30}
top := stack[len(stack)-1]
fmt.Println(top)Solution
Step 1: Analyze stack contents
The stack slice contains elements [10, 20, 30], where 30 is the last element (top).Step 2: Evaluate peek operation
top := stack[len(stack)-1] accesses stack[2], which is 30, then prints it.Final Answer:
30 -> Option DQuick Check:
Top element = 30 [OK]
- Printing bottom element instead of top
- Indexing out of range causing error
- Confusing output with pop operation
stack := []int{}
top := stack[len(stack)-1]
fmt.Println(top)Solution
Step 1: Check stack initialization
The stack is initialized as an empty slice with length 0.Step 2: Analyze peek operation
Accessing stack[len(stack)-1] means stack[-1], which is invalid and causes runtime panic: index out of range.Final Answer:
Index out of range runtime error -> Option BQuick Check:
Empty slice peek causes runtime error [OK]
- Assuming peek returns zero on empty stack
- Ignoring runtime panic possibility
- Confusing syntax error with runtime error
stack := []int{5, 10, 15}, write the correct Go code snippet to safely peek the top element and handle the case when the stack is empty.Solution
Step 1: Check stack length before peeking
To avoid runtime error, verify stack length > 0 before accessing top element.Step 2: Access top element safely and handle empty case
If stack is not empty, peek top with stack[len(stack)-1]. Otherwise, print "Stack is empty" message.Final Answer:
if len(stack) > 0 { top := stack[len(stack)-1] fmt.Println(top) } else { fmt.Println("Stack is empty") } -> Option CQuick Check:
Check length before peek to avoid errors [OK]
- Not checking length before peek
- Using len(stack) as index
- Assuming nil check is enough
Ready to prove it?
Pass the test and this pattern moves unknown
