📖 Scenario: Imagine you are organizing books on a shelf. You can place them side by side in a row (like an array) or link them with strings so you can rearrange easily (like a linked list).
🎯 Goal: You will create a simple array and a linked list with the same numbers. Then, you will print their contents to see how they store data differently in memory.
📋 What You'll Learn
Create an array called numbers_array with values 10, 20, 30, 40, 50
Create a linked list called numbers_list with the same values in order
Use a for loop to print all elements of numbers_array
Use a while loop to print all elements of numbers_list
💡 Why This Matters
🌍 Real World
Arrays and linked lists are basic ways computers store lists of items. Arrays are like books on a shelf, linked lists are like a chain of connected boxes.
💼 Career
Understanding these helps in writing efficient programs and choosing the right data structure for tasks like managing playlists, undo history, or memory buffers.
Progress0 / 4 steps
1
Create an array with numbers
Create an array called numbers_array with these exact values: 10, 20, 30, 40, 50
DSA Rust
Hint
Use square brackets [] to create an array in Rust.
2
Create a linked list with the same numbers
Create a linked list called numbers_list using Box and Option to store the values 10, 20, 30, 40, 50 in order
DSA Rust
Hint
Use a struct for the node and Option> for the next pointer.
3
Print all elements of the array
Use a for loop with variable num to iterate over numbers_array and print each number
DSA Rust
Hint
Use for num in numbers_array and println!("{}", num) inside the loop.
4
Print all elements of the linked list
Use a while loop with a variable current to traverse numbers_list and print each node's value
DSA Rust
Hint
Use while let Some(node) = current to loop and update current = &node.next.
Practice
(1/5)
1. Which statement best describes the memory layout difference between an array and a linked list?
easy
A. A linked list stores elements contiguously, but an array uses pointers between elements.
B. Both array and linked list store elements contiguously in memory.
C. Arrays use pointers to link elements, linked lists store elements contiguously.
D. An array stores elements contiguously in memory, while a linked list stores elements scattered with pointers.
Solution
Step 1: Understand array memory layout
An array stores all its elements in a continuous block of memory, so elements are next to each other.
Step 2: Understand linked list memory layout
A linked list stores each element separately in memory, and each element has a pointer to the next, so elements are scattered.
Final Answer:
An array stores elements contiguously in memory, while a linked list stores elements scattered with pointers. -> Option D
Quick Check:
Array = contiguous, Linked list = scattered with pointers [OK]
Hint: Arrays are continuous blocks; linked lists use pointers [OK]
Common Mistakes:
Thinking linked lists store elements contiguously
Confusing pointers usage between arrays and linked lists
Assuming arrays use pointers between elements
2. Which Rust code snippet correctly declares a fixed-size array of 5 integers with explicit type annotation?
easy
A. let arr = [1, 2, 3, 4, 5];
B. let arr = vec![1, 2, 3, 4, 5];
C. let arr: [i32; 5] = [1, 2, 3, 4, 5];
D. let arr = (1, 2, 3, 4, 5);
Solution
Step 1: Identify fixed-size array syntax in Rust
Rust fixed-size arrays require type and size: [type; size].
Step 2: Check each option
let arr: [i32; 5] = [1, 2, 3, 4, 5]; uses let arr: [i32; 5] = [1, 2, 3, 4, 5]; which is correct fixed-size array syntax.
Final Answer:
let arr: [i32; 5] = [1, 2, 3, 4, 5]; -> Option C
Quick Check:
Fixed-size array syntax = [type; size] [OK]
Hint: Fixed arrays need type and size: [type; size] [OK]
Common Mistakes:
Using vec! macro for fixed-size array
Missing type and size in array declaration
Using tuple syntax instead of array
3. Consider this Rust code creating a linked list node struct and two nodes linked together:
What is the main reason for the compilation error?
medium
A. Use of moved value: node1 is moved into node2 and cannot be used again
B. Missing lifetime annotations on struct Node
C. Box cannot be used inside Option
D. Printing node2.value is invalid syntax
Solution
Step 1: Analyze ownership of node1
node1 is moved into Box inside node2's next field, so node1 cannot be used after move.
Step 2: Identify error cause
Because node1 is moved, any further use or move causes compile error "use of moved value".
Final Answer:
Use of moved value: node1 is moved into node2 and cannot be used again -> Option A
Quick Check:
Ownership moved node1 causes compile error [OK]
Hint: Moving ownership invalidates original variable [OK]
Common Mistakes:
Thinking Box inside Option is invalid
Assuming missing lifetimes cause error here
Believing print syntax is wrong
5. You want to store 1 million integers and frequently access elements by index. Considering memory layout and performance, which data structure is better in Rust and why?
hard
A. Array, because linked lists cannot store integers efficiently.
B. Array, because elements are stored contiguously allowing fast index access and better cache usage.
C. Linked list, because it uses less memory than arrays for large data.
D. Linked list, because it uses pointers and is faster for random access.
Solution
Step 1: Consider access pattern and memory layout
Arrays store elements contiguously, so accessing by index is O(1) and cache-friendly.
Step 2: Compare linked list access and memory use
Linked lists store elements scattered with pointers, making index access O(n) and less cache efficient.
Final Answer:
Array, because elements are stored contiguously allowing fast index access and better cache usage. -> Option B
Quick Check:
Contiguous arrays = fast index access [OK]
Hint: For fast index access, choose arrays over linked lists [OK]
Common Mistakes:
Assuming linked lists are faster for index access
Thinking linked lists use less memory for large data
Believing arrays cannot store large data efficiently
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.