A stack is like a pile of plates where you can only add or remove the top plate. It follows Last In, First Out (LIFO) order.
Click to reveal answer
beginner
Why do we need a stack in programming?
Stacks help manage tasks that need to be done in reverse order, like undo actions, function calls, or matching brackets.
Click to reveal answer
intermediate
What problem does a stack solve in function calls?
It keeps track of where each function should return after finishing, so functions can call others and return correctly.
Click to reveal answer
intermediate
How does a stack help in expression evaluation?
Stacks store operators and operands to evaluate expressions in the correct order, especially with parentheses and operator precedence.
Click to reveal answer
beginner
What is the main rule of stack operations?
You can only add (push) or remove (pop) items from the top of the stack, following Last In, First Out (LIFO).
Click to reveal answer
What order does a stack follow?
ALast In, First Out (LIFO)
BFirst In, First Out (FIFO)
CRandom order
DSorted order
✗ Incorrect
A stack follows Last In, First Out (LIFO), meaning the last item added is the first to be removed.
Which problem is best solved by using a stack?
AUndo feature in text editors
BFinding the shortest path in a graph
CSorting a list
DSearching in a database
✗ Incorrect
Undo features use stacks to reverse actions in the order they were done.
In function calls, what does the stack keep track of?
AVariable names
BOutput results
CInput values
DReturn addresses
✗ Incorrect
The stack stores return addresses so the program knows where to continue after a function finishes.
Which operation is NOT allowed directly on a stack?
APop
BInsert at bottom
CPeek
DPush
✗ Incorrect
Stacks only allow adding or removing items from the top, not inserting at the bottom.
How does a stack help with matching parentheses?
ABy counting the total number of brackets
BBy sorting the brackets alphabetically
CBy storing opening brackets until a matching closing bracket is found
DBy ignoring brackets
✗ Incorrect
Stacks store opening brackets and check for matching closing brackets in correct order.
Explain why a stack is useful in managing function calls.
Think about how functions call other functions and need to return to the right place.
You got /4 concepts.
Describe how a stack helps solve problems involving reversing actions or order.
Consider situations where the last thing done must be undone first.
You got /4 concepts.
Practice
(1/5)
1. Why do we use a stack data structure in programming?
easy
A. To store data in random order
B. To keep track of function calls and return addresses
C. To sort numbers quickly
D. To store large amounts of data permanently
Solution
Step 1: Understand the purpose of a stack
A stack stores data in a last-in, first-out order, which is perfect for tracking function calls and returns.
Step 2: Identify common uses of stack
Stacks are mainly used to keep track of function calls, especially in recursion, where the last called function must finish first.
Final Answer:
To keep track of function calls and return addresses -> Option B
Quick Check:
Stack = function call tracking [OK]
Hint: Stack = last-in, first-out for function calls [OK]
Common Mistakes:
Thinking stack stores data randomly
Confusing stack with queue
Assuming stack sorts data
2. Which of the following is the correct way to push an element onto a stack in C?
easy
A. stack[++top] = value;
B. stack[top] = value++;
C. stack[top++] = value;
D. stack[top--] = value;
Solution
Step 1: Understand stack push operation
To push, we first increase the top index, then assign the value at that position.
Step 2: Check each option
stack[++top] = value; increments top before assignment, which is correct. stack[top++] = value; assigns then increments, which may overwrite. stack[top] = value++; increments value, not top. stack[top--] = value; decrements top, which is wrong for push.
Final Answer:
stack[++top] = value; -> Option A
Quick Check:
Push = increment top then assign [OK]
Hint: Push means increment top first, then assign [OK]
Common Mistakes:
Incrementing after assignment causes overwrite
Decrementing top on push
Incrementing value instead of top
3. What will be the output of the following C code snippet?
int stack[3];
int top = -1;
stack[++top] = 10;
stack[++top] = 20;
stack[++top] = 30;
printf("%d", stack[top]);
medium
A. 10
B. 20
C. 30
D. Runtime error
Solution
Step 1: Trace stack push operations
Initially, top = -1. After first push, top=0, stack[0]=10. Second push: top=1, stack[1]=20. Third push: top=2, stack[2]=30.
Step 2: Check printed value
printf prints stack[top], which is stack[2] = 30.
Final Answer:
30 -> Option C
Quick Check:
Last pushed value = 30 [OK]
Hint: Last pushed value is at stack[top] [OK]
Common Mistakes:
Printing stack[0] instead of stack[top]
Confusing top index after pushes
Assuming runtime error without overflow
4. Identify the error in this stack pop function in C:
int pop(int stack[], int *top) {
if (*top == -1) {
printf("Stack Underflow\n");
return -1;
}
return stack[*top--];
}
medium
A. Incorrect decrement of top pointer
B. Missing check for stack overflow
C. Returning wrong stack element
D. No error, function is correct
Solution
Step 1: Understand pointer decrement in return statement
The expression stack[*top--] uses post-decrement on *top, but *top-- decrements the pointer, not the value it points to.
Step 2: Correct way to decrement top value
It should be stack[(*top)--] to decrement the value pointed by top after accessing stack.
Final Answer:
Incorrect decrement of top pointer -> Option A
Quick Check:
Use (*top)-- to decrement value, not pointer [OK]
Hint: Use (*top)-- to decrement value, not pointer [OK]
Common Mistakes:
Using *top-- instead of (*top)--
Ignoring pointer vs value decrement
Not checking stack underflow
5. You want to reverse a string using a stack in C. Which approach correctly uses the stack to solve this problem?
hard
A. Use a queue instead of a stack to reverse the string
B. Push characters only if they are vowels, then pop to reverse
C. Pop characters first, then push them back to reverse
D. Push each character of the string onto the stack, then pop all characters to form the reversed string
Solution
Step 1: Understand stack reversal logic
Pushing all characters onto the stack stores them in order. Popping them reverses the order due to last-in, first-out behavior.
Step 2: Evaluate options
Push each character of the string onto the stack, then pop all characters to form the reversed string correctly pushes all characters then pops to reverse. Push characters only if they are vowels, then pop to reverse only pushes vowels, losing other characters. Pop characters first, then push them back to reverse pops before pushing, which is invalid. Use a queue instead of a stack to reverse the string suggests queue, which reverses order differently.
Final Answer:
Push each character of the string onto the stack, then pop all characters to form the reversed string -> Option D
Quick Check:
Stack reversal = push all, then pop all [OK]
Hint: Push all chars, then pop all to reverse [OK]
Common Mistakes:
Pushing only some characters
Popping before pushing
Using queue instead of stack for reversal
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.