Bird
Raised Fist0
C Sharp (C#)programming~30 mins

LinkedList usage in C Sharp (C#) - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

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
LinkedList usage
📖 Scenario: You are managing a waiting list for a small cafe. Customers arrive and are added to the list in order. Sometimes, customers leave the list before being served.
🎯 Goal: You will create a linked list to hold customer names, add customers to the list, remove a customer who leaves early, and finally display the current waiting list.
📋 What You'll Learn
Use the LinkedList<string> class
Add customers to the linked list using AddLast
Remove a specific customer using Remove
Iterate over the linked list to print all customer names
💡 Why This Matters
🌍 Real World
Linked lists are useful when you need to add or remove items quickly from the start or end of a list, like managing queues or waiting lists.
💼 Career
Understanding linked lists helps in software development roles that involve data structures, improving your ability to write efficient and flexible code.
Progress0 / 4 steps
1
Create the linked list
Create a LinkedList<string> called waitingList and add these customers in order using AddLast: "Alice", "Bob", "Charlie".
C Sharp (C#)
Hint

Use LinkedList<string> waitingList = new LinkedList<string>(); to create the list. Then add each name with waitingList.AddLast(name);.

2
Remove a customer
Create a variable called customerToRemove and set it to "Bob". Then remove customerToRemove from waitingList using the Remove method.
C Sharp (C#)
Hint

Set string customerToRemove = "Bob"; and then call waitingList.Remove(customerToRemove);.

3
Iterate over the linked list
Use a foreach loop with variable customer to go through waitingList and add each customer to a new List<string> called currentCustomers.
C Sharp (C#)
Hint

Create List<string> currentCustomers = new List<string>(); then use foreach (string customer in waitingList) to add each customer.

4
Print the current waiting list
Use a foreach loop with variable customer to print each name in currentCustomers on its own line using Console.WriteLine.
C Sharp (C#)
Hint

Use foreach (string customer in currentCustomers) and inside the loop write Console.WriteLine(customer);.

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

  1. Step 1: Understand LinkedList structure

    A LinkedList stores elements in nodes, where each node points to the next (and possibly previous) node.
  2. 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.
  3. Final Answer:

    It stores elements in nodes linked by references. -> Option A
  4. 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

  1. Step 1: Recall LinkedList method names

    The method to add an element at the start is AddFirst.
  2. Step 2: Check each option's validity

    Only AddFirst is a valid LinkedList method; others are invalid or do not exist.
  3. Final Answer:

    list.AddFirst(10); -> Option B
  4. 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

  1. 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.
  2. Step 2: Understand foreach iteration order

    Foreach iterates from first to last node, so output is "banana apple cherry ".
  3. Final Answer:

    banana apple cherry -> Option A
  4. 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

  1. 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.
  2. Step 2: Check Count after removal attempt

    Since 3 is not in the list, list remains with 2 elements; Count is 2.
  3. Final Answer:

    Remove(3) does nothing since 3 is not found; Count remains 2. -> Option D
  4. 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

  1. Step 1: Understand safe removal during iteration

    Removing nodes while iterating requires storing next node before removal to avoid invalid references.
  2. 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.
  3. 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
  4. 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
  • Using RemoveAll which LinkedList does not have
  • Using ElementAt which is inefficient and unsafe