📖 Scenario: Imagine you have a stack of books. You want to add a new book on top of the stack. This is called a push operation in computer science.
🎯 Goal: You will create a stack using a vector, set up a new book to add, push it onto the stack, and then print the stack to see the new book on top.
📋 What You'll Learn
Create a vector called stack with these exact integers: 10, 20, 30
Create a variable called new_book and set it to 40
Use the push method to add new_book to stack
Print the stack vector to show the updated stack
💡 Why This Matters
🌍 Real World
Stacks are used in many places like undo features in apps, back buttons in browsers, and managing function calls in programs.
💼 Career
Understanding stack operations is essential for software developers, especially when working with algorithms, memory management, and system design.
Progress0 / 4 steps
1
Create the initial stack
Create a vector called stack with the integers 10, 20, and 30 exactly.
DSA Rust
Hint
Use let mut stack = vec![10, 20, 30]; to create a mutable vector.
2
Set up the new book to push
Create a variable called new_book and set it to the integer 40.
DSA Rust
Hint
Use let new_book = 40; to create the variable.
3
Push the new book onto the stack
Use the push method on stack to add new_book.
DSA Rust
Hint
Use stack.push(new_book); to add the new book on top.
4
Print the updated stack
Print the stack vector to show the updated stack after pushing new_book.
DSA Rust
Hint
Use println!("{:?}", stack); to print the vector.
Practice
(1/5)
1. What does the push operation do in a stack data structure?
easy
A. Removes the top element from the stack
B. Adds an element to the top of the stack
C. Returns the bottom element of the stack
D. Checks if the stack is empty
Solution
Step 1: Understand stack behavior
A stack follows Last In First Out (LIFO) principle, where elements are added or removed from the top.
Step 2: Define push operation
The push operation adds a new element on top of the existing elements in the stack.
Final Answer:
Adds an element to the top of the stack -> Option B
Quick Check:
Push = Add top element [OK]
Hint: Push always adds to the top of the stack [OK]
Common Mistakes:
Confusing push with pop operation
Thinking push removes elements
Assuming push adds to the bottom
2. Which of the following is the correct Rust syntax to push an element 5 onto a stack implemented as a Vec<i32> named stack?
easy
A. stack.push(5);
B. stack.add(5);
C. stack.insert(5);
D. stack.append(5);
Solution
Step 1: Recall Rust Vec push method
In Rust, Vec has a method push to add elements at the end (top of stack).
Step 2: Check method names
add, insert, and append have different meanings or require different parameters.
Final Answer:
stack.push(5); -> Option A
Quick Check:
Vec push method = stack.push(5); [OK]
Hint: Use .push() to add elements to Vec stack [OK]
Common Mistakes:
Using .add() which does not exist for Vec
Confusing .insert() which needs index
Using .append() which merges vectors
3. What will be the output of the following Rust code?
let mut stack = Vec::new();
stack.push(10);
stack.push(20);
stack.push(30);
println!("{:?}", stack);
medium
A. [10, 20, 30]
B. [30, 20, 10]
C. [10, 20]
D. Compilation error
Solution
Step 1: Trace push operations
Elements 10, 20, and 30 are pushed in order, so stack contains [10, 20, 30].
Step 2: Understand Vec print format
Printing with {:?} shows elements in insertion order, so output is [10, 20, 30].
Final Answer:
[10, 20, 30] -> Option A
Quick Check:
Push order preserved in Vec print [OK]
Hint: Vec prints elements in insertion order [OK]
Common Mistakes:
Assuming stack prints top element first
Confusing push order with pop order
Expecting reversed output
4. Identify the error in this Rust code that tries to push an element onto a stack:
let stack = Vec::new();
stack.push(100);
medium
A. Missing semicolon after push
B. Vec::new() is incorrect syntax
C. push method does not exist for Vec
D. stack is immutable, cannot push
Solution
Step 1: Check variable mutability
The variable stack is declared immutable by default, so push cannot modify it.
Step 2: Understand push method requirements
push requires the vector to be mutable to add elements.
Final Answer:
stack is immutable, cannot push -> Option D
Quick Check:
Mutable vector needed for push [OK]
Hint: Declare stack as mutable with 'mut' to push [OK]
Common Mistakes:
Forgetting to add 'mut' keyword
Thinking Vec::new() is wrong syntax
Assuming push is not a Vec method
5. You want to implement a stack using a Rust Vec<i32> and push elements 1, 2, 3 in that order. After pushing, you want to print the stack from top to bottom. Which code snippet correctly achieves this?
hard
A. let mut stack = Vec::new();
stack.push(1);
stack.push(2);
stack.push(3);
for i in stack.iter() {
println!("{}", i);
}
B. let mut stack = Vec::new();
stack.push(3);
stack.push(2);
stack.push(1);
for i in stack.iter() {
println!("{}", i);
}
C. let mut stack = Vec::new();
stack.push(1);
stack.push(2);
stack.push(3);
for i in stack.iter().rev() {
println!("{}", i);
}
D. let mut stack = Vec::new();
stack.push(1);
stack.push(2);
stack.push(3);
for i in stack.into_iter() {
println!("{}", i);
}
Solution
Step 1: Push elements in order
Elements 1, 2, 3 are pushed in order, so stack is [1, 2, 3] with 3 at top.
Step 2: Print from top to bottom
To print from top (last pushed) to bottom, iterate in reverse order using iter().rev().
Final Answer:
Code snippet with stack.iter().rev() -> Option C
Quick Check:
Reverse iteration prints top to bottom [OK]
Hint: Use .iter().rev() to print stack top to bottom [OK]
Common Mistakes:
Printing in normal order shows bottom to top
Pushing elements in reverse order
Using into_iter() which consumes the stack
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.