Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a LinkedList in C#?
A LinkedList is a collection that stores elements in nodes, where each node points to the next and previous nodes, allowing efficient insertions and deletions anywhere in the list.
Click to reveal answer
beginner
How do you add an element at the start of a LinkedList in C#?
Use the AddFirst() method. For example: linkedList.AddFirst(value); adds a new node with the given value at the beginning.
Click to reveal answer
beginner
What method removes the last element from a LinkedList in C#?
The RemoveLast() method removes the last node from the LinkedList.
Click to reveal answer
beginner
How can you find a specific value in a LinkedList?
Use the Find(value) method. It returns the first node containing the value or null if not found.
Click to reveal answer
intermediate
Why might you choose a LinkedList over a List in C#?
LinkedList allows faster insertions and deletions in the middle of the list because it doesn't require shifting elements like a List does.
Click to reveal answer
Which method adds a new node at the end of a LinkedList in C#?
AInsert()
BAddFirst()
CAddLast()
DAppend()
✗ Incorrect
AddLast() adds a new node at the end of the LinkedList.
What does the Find(value) method return if the value is not found in the LinkedList?
AReturns an empty node
BThrows an exception
CReturns -1
DReturns null
✗ Incorrect
Find(value) returns null if the value is not found.
Which of these is NOT a benefit of using LinkedList over List?
AFaster random access by index
BFaster deletions in the middle
CEfficient memory usage for frequent insertions
DFaster insertions in the middle
✗ Incorrect
LinkedList does not support fast random access by index; List is better for that.
How do you remove the first node from a LinkedList in C#?
ARemoveFirst()
BRemoveAt(0)
CDeleteFirst()
DRemove()
✗ Incorrect
RemoveFirst() removes the first node from the LinkedList.
What type of data structure is a LinkedList?
AArray-based
BNode-based
CTree-based
DHash-based
✗ Incorrect
LinkedList is a node-based data structure where each node links to others.
Explain how to add and remove elements in a LinkedList in C#.
Think about methods that add or remove nodes at the start or end.
You got /5 concepts.
Describe when and why you would use a LinkedList instead of a List in C#.
Consider performance differences for different operations.
You got /4 concepts.
Practice
(1/5)
1. What is a key characteristic of a LinkedList in C#?
easy
A. It stores elements in nodes linked by references.
B. It stores elements in a fixed-size array.
C. It only allows adding elements at the end.
D. It cannot remove elements once added.
Solution
Step 1: Understand LinkedList structure
A LinkedList stores elements in nodes, where each node points to the next (and possibly previous) node.
Step 2: Compare options with LinkedList behavior
Only It stores elements in nodes linked by references. correctly describes this linked node structure; others describe arrays or incorrect behaviors.
Final Answer:
It stores elements in nodes linked by references. -> Option A
Quick Check:
LinkedList = nodes linked by references [OK]
Hint: LinkedList uses nodes connected by links, not arrays. [OK]
Common Mistakes:
Thinking LinkedList uses arrays internally
Assuming LinkedList only adds at the end
Believing LinkedList cannot remove elements
2. Which of the following is the correct way to add an element at the start of a LinkedList<int> named list?
easy
A. list.AddStart(10);
B. list.AddFirst(10);
C. list.InsertAt(0, 10);
D. list.PushFront(10);
Solution
Step 1: Recall LinkedList method names
The method to add an element at the start is AddFirst.
Step 2: Check each option's validity
Only AddFirst is a valid LinkedList method; others are invalid or do not exist.
Final Answer:
list.AddFirst(10); -> Option B
Quick Check:
AddFirst adds at start [OK]
Hint: Use AddFirst to add at the start of LinkedList. [OK]
Common Mistakes:
Using non-existent methods like AddStart or PushFront
Confusing LinkedList with List methods
Trying to use InsertAt which LinkedList does not have
3. What will be the output of this C# code?
var list = new LinkedList<string>();
list.AddLast("apple");
list.AddFirst("banana");
list.AddLast("cherry");
foreach(var item in list) Console.Write(item + " ");
medium
A. banana apple cherry
B. apple banana cherry
C. cherry apple banana
D. banana cherry apple
Solution
Step 1: Track insertion order
First, "apple" is added last, so list: apple. Then "banana" added first, so list: banana, apple. Then "cherry" added last, so list: banana, apple, cherry.
Step 2: Understand foreach iteration order
Foreach iterates from first to last node, so output is "banana apple cherry ".
Final Answer:
banana apple cherry -> Option A
Quick Check:
First = banana, last = cherry [OK]
Hint: AddFirst puts item at start; AddLast at end. [OK]
Common Mistakes:
Assuming AddLast adds at start
Confusing order of AddFirst and AddLast
Expecting output in reverse order
4. Identify the error in this code snippet:
var list = new LinkedList<int>();
list.AddFirst(1);
list.AddLast(2);
list.Remove(3);
Console.WriteLine(list.Count);
medium
A. Remove(3) throws an exception because 3 is not in the list.
B. Count property does not exist on LinkedList.
C. AddFirst and AddLast methods are invalid for LinkedList.
D. Remove(3) does nothing since 3 is not found; Count remains 2.
Solution
Step 1: Understand Remove behavior
Remove(value) tries to remove the first node with that value. If not found, it does nothing and returns false; no exception is thrown.
Step 2: Check Count after removal attempt
Since 3 is not in the list, list remains with 2 elements; Count is 2.
Final Answer:
Remove(3) does nothing since 3 is not found; Count remains 2. -> Option D
Quick Check:
Remove missing value = no error, Count unchanged [OK]
Hint: Remove missing item does not throw error, just returns false. [OK]
Common Mistakes:
Expecting Remove to throw exception if item missing
Thinking AddFirst/AddLast are invalid
Assuming Count is not a property
5. Given a LinkedList<int> with values 1, 2, 3, 4, 5, which code snippet correctly removes all even numbers from the list?
hard
A. foreach(var node in list) { if(node % 2 == 0) list.Remove(node); }
B. for(int i = 0; i < list.Count; i++) { if(list.ElementAt(i) % 2 == 0) list.Remove(list.ElementAt(i)); }
C. var current = list.First; while(current != null) { var next = current.Next; if(current.Value % 2 == 0) list.Remove(current); current = next; }
D. list.RemoveAll(x => x % 2 == 0);
Solution
Step 1: Understand safe removal during iteration
Removing nodes while iterating requires storing next node before removal to avoid invalid references.
Step 2: Analyze each option
foreach(var node in list) { if(node % 2 == 0) list.Remove(node); } uses foreach which throws error on modification during iteration. var current = list.First; while(current != null) { var next = current.Next; if(current.Value % 2 == 0) list.Remove(current); current = next; } correctly uses a while loop with next node saved. for(int i = 0; i < list.Count; i++) { if(list.ElementAt(i) % 2 == 0) list.Remove(list.ElementAt(i)); } uses ElementAt which is inefficient and unsafe. list.RemoveAll(x => x % 2 == 0); is invalid as LinkedList has no RemoveAll method.
Final Answer:
var current = list.First; while(current != null) { var next = current.Next; if(current.Value % 2 == 0) list.Remove(current); current = next; } -> Option C
Quick Check:
Use while loop with next saved to remove nodes safely [OK]
Hint: Save next node before removal to avoid iteration errors. [OK]
Common Mistakes:
Modifying list inside foreach causes runtime error