📖 Scenario: Imagine you are managing a stack of books on a shelf. You want to know if the shelf is empty or completely full before adding or removing books.
🎯 Goal: You will create a simple stack using an array and write code to check if the stack is empty or full.
📋 What You'll Learn
Create an integer array called stack with size 5
Create an integer variable called top initialized to -1
Create an integer variable called max_size set to 5
Write a function isEmpty that returns 1 if the stack is empty, else 0
Write a function isFull that returns 1 if the stack is full, else 0
Print the results of isEmpty() and isFull()
💡 Why This Matters
🌍 Real World
Stacks are used in many places like undo features in apps, browser history, and managing tasks.
💼 Career
Understanding stack operations is important for software development, debugging, and working with system internals.
Progress0 / 4 steps
1
Create the stack array and top variable
Create an integer array called stack with size 5 and an integer variable called top initialized to -1.
DSA C
Hint
The stack is an array of size 5. The top variable keeps track of the last filled position, starting at -1 when empty.
2
Add max_size variable
Add an integer variable called max_size and set it to 5.
DSA C
Hint
The max_size variable holds the maximum number of items the stack can hold.
3
Write isEmpty and isFull functions
Write a function isEmpty that returns 1 if top is -1, else 0. Write a function isFull that returns 1 if top equals max_size - 1, else 0.
DSA C
Hint
The stack is empty if top is -1. It is full if top is one less than max_size.
4
Print if stack is empty or full
Print the results of isEmpty() and isFull() using printf.
DSA C
Hint
Use printf to show the results of isEmpty() and isFull(). Since top is -1, the stack is empty and not full.
Practice
(1/5)
1. What does the function isEmpty() typically check in a stack data structure?
easy
A. If the stack has exactly one element
B. If the stack is full
C. If the stack has no elements
D. If the stack has more than one element
Solution
Step 1: Understand the purpose of isEmpty()
The isEmpty() function checks whether the stack contains any elements or not.
Step 2: Identify what 'empty' means for a stack
A stack is empty when it has zero elements, meaning no data is stored inside.
Final Answer:
If the stack has no elements -> Option C
Quick Check:
Empty stack means zero elements = true [OK]
Hint: Empty stack means no elements inside [OK]
Common Mistakes:
Confusing empty with full
Thinking empty means one element
Mixing up stack size with capacity
2. Which of the following is the correct syntax to check if a stack is full in C, assuming top is the index of the top element and MAX is the stack capacity?
easy
A. if (top == MAX - 1)
B. if (top < MAX - 1)
C. if (top > MAX)
D. if (top == MAX)
Solution
Step 1: Understand stack indexing
Stack indices start at 0, so the last valid index is MAX - 1.
Step 2: Check condition for full stack
The stack is full when top points to the last index, which is MAX - 1.
Final Answer:
if (top == MAX - 1) -> Option A
Quick Check:
Top equals max index means full [OK]
Hint: Stack full when top equals MAX minus one [OK]
Common Mistakes:
Using top == MAX (off by one error)
Using top > MAX (invalid index)
Using top < MAX - 1 (means not full)
3. Consider this C code snippet for a stack with MAX = 3:
int stack[MAX];
int top = -1;
// Push elements
if (top < MAX - 1) top++;
stack[top] = 10;
if (top < MAX - 1) top++;
stack[top] = 20;
// Check if full
if (top == MAX - 1) printf("Full"); else printf("Not Full");
What will be printed?
medium
A. Not Full
B. Full
C. Runtime Error
D. Compilation Error
Solution
Step 1: Trace the push operations
Initially, top = -1. First push increments top to 0 and stores 10. Second push increments top to 1 and stores 20.
Step 2: Check if stack is full
Full means top == MAX - 1 which is 2. Here, top is 1, so stack is not full.
Final Answer:
Not Full -> Option A
Quick Check:
Top is 1, max index 2, so not full [OK]
Hint: Full means top equals MAX-1 index [OK]
Common Mistakes:
Assuming two pushes fill the stack
Confusing top index with count
Ignoring initial top = -1
4. Find the error in this C function that checks if a stack is empty:
int isEmpty(int top) {
if (top == 0)
return 1;
else
return 0;
}
medium
A. It should check if top == MAX - 1
B. It should check if top == -1 instead of 0
C. It should return 0 when empty
D. No error, function is correct
Solution
Step 1: Understand stack empty condition
In stack implementation, empty means top == -1, not 0.
Step 2: Identify the incorrect condition
The function checks top == 0, which means stack has one element, so it's wrong.
Final Answer:
It should check if top == -1 instead of 0 -> Option B
Quick Check:
Empty stack top is -1, not 0 [OK]
Hint: Empty stack top is -1, not zero [OK]
Common Mistakes:
Checking top == 0 for empty
Confusing full and empty conditions
Returning wrong boolean values
5. You have a stack with capacity 5 and top = 3. You want to push two elements safely. Which sequence of checks and operations is correct to avoid overflow?
hard
A. No need to check; just increment top and push
B. Check if top == 5 before each push; if false, increment top and push
C. Check if top == 3 before each push; if false, increment top and push
D. Check if top == 4 before each push; if false, increment top and push
Solution
Step 1: Understand stack capacity and top indexing
Stack capacity is 5, so max top index is 4 (0 to 4).
Step 2: Check condition before pushing
Before each push, check if top == 4 (full). If not full, increment top and push.
Final Answer:
Check if top == 4 before each push; if false, increment top and push -> Option D
Quick Check:
Max index is capacity-1 = 4, check top == 4 [OK]
Hint: Check top equals capacity minus one before push [OK]
Common Mistakes:
Checking top == capacity (off by one)
Not checking before push causes overflow
Assuming top == 3 means full
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.