Bird
Raised Fist0
DSA C#programming~20 mins

Search for a Value in Linked List in DSA C# - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Linked List Search Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output after searching for value 3?
Given the linked list and search code below, what will be printed when searching for value 3?
DSA C#
public class Node {
    public int data;
    public Node next;
    public Node(int d) { data = d; next = null; }
}

public class LinkedList {
    public Node head;

    public bool Search(int key) {
        Node current = head;
        while (current != null) {
            if (current.data == key) return true;
            current = current.next;
        }
        return false;
    }
}

LinkedList list = new LinkedList();
list.head = new Node(1);
list.head.next = new Node(2);
list.head.next.next = new Node(3);
list.head.next.next.next = new Node(4);

bool found = list.Search(3);
System.Console.WriteLine(found ? "Found" : "Not Found");
ARuntime error
B"Not Found"
C"Found"
DCompilation error
Attempts:
2 left
💡 Hint
Think about how the search method checks each node's data.
❓ Predict Output
intermediate
2:00remaining
What is the output after searching for value 5?
Given the linked list and search code below, what will be printed when searching for value 5?
DSA C#
public class Node {
    public int data;
    public Node next;
    public Node(int d) { data = d; next = null; }
}

public class LinkedList {
    public Node head;

    public bool Search(int key) {
        Node current = head;
        while (current != null) {
            if (current.data == key) return true;
            current = current.next;
        }
        return false;
    }
}

LinkedList list = new LinkedList();
list.head = new Node(1);
list.head.next = new Node(2);
list.head.next.next = new Node(3);
list.head.next.next.next = new Node(4);

bool found = list.Search(5);
System.Console.WriteLine(found ? "Found" : "Not Found");
A"Not Found"
B"Found"
CNullReferenceException
DCompilation error
Attempts:
2 left
💡 Hint
Check if the value 5 exists in the linked list nodes.
🔧 Debug
advanced
2:00remaining
What error does this search code produce?
Consider this search method in a linked list. What error will it cause when called?
DSA C#
public bool Search(int key) {
    Node current = head;
    while (current.next != null) {
        if (current.data == key) return true;
        current = current.next;
    }
    return false;
}
ANo error, works correctly
BNullReferenceException
CStackOverflowException
DCompilation error
Attempts:
2 left
💡 Hint
Think about what happens when current is the last node.
🧠 Conceptual
advanced
2:00remaining
How many nodes are checked in the search method?
In the search method below, how many nodes are checked when searching for a value in a linked list of 5 nodes?
DSA C#
public bool Search(int key) {
    Node current = head;
    while (current != null) {
        if (current.data == key) return true;
        current = current.next;
    }
    return false;
}
AUp to 4 nodes
BExactly 5 nodes always
COnly 1 node
DUp to 5 nodes
Attempts:
2 left
💡 Hint
The loop stops when the value is found or all nodes are checked.
🚀 Application
expert
3:00remaining
What is the output after searching for value 7 in this linked list?
Given the linked list with nodes 10 -> 20 -> 30 -> 40 -> 50, and the search method below, what will be printed when searching for value 7?
DSA C#
public class Node {
    public int data;
    public Node next;
    public Node(int d) { data = d; next = null; }
}

public class LinkedList {
    public Node head;

    public bool Search(int key) {
        Node current = head;
        while (current != null) {
            if (current.data == key) return true;
            current = current.next;
        }
        return false;
    }
}

LinkedList list = new LinkedList();
list.head = new Node(10);
list.head.next = new Node(20);
list.head.next.next = new Node(30);
list.head.next.next.next = new Node(40);
list.head.next.next.next.next = new Node(50);

bool found = list.Search(7);
System.Console.WriteLine(found ? "Found" : "Not Found");
A"Not Found"
B"Found"
CNullReferenceException
DCompilation error
Attempts:
2 left
💡 Hint
Check if 7 is in the list nodes.

Practice

(1/5)
1. What is the main purpose of searching for a value in a linked list?
easy
A. To add a new node at the end
B. To find if the value exists in the list
C. To delete the first node
D. To reverse the linked list

Solution

  1. Step 1: Understand the search operation

    Searching means checking each node to see if it contains the target value.
  2. Step 2: Identify the goal of searching

    The goal is to find whether the value exists anywhere in the linked list.
  3. Final Answer:

    To find if the value exists in the list -> Option B
  4. Quick Check:

    Search = Find value presence [OK]
Hint: Search means checking nodes for the value [OK]
Common Mistakes:
  • Confusing search with insertion or deletion
  • Thinking search changes the list
  • Assuming search returns the node position always
2. Which of the following is the correct C# syntax to start traversing a linked list from its head node named head?
easy
A. Node current => head;
B. Node current == head;
C. Node current = head;
D. Node current <- head;

Solution

  1. Step 1: Understand variable assignment syntax in C#

    To assign a reference, use single equals sign =.
  2. Step 2: Check each option for correct assignment

    Node current = head; uses =, which is correct. Others use invalid operators.
  3. Final Answer:

    Node current = head; -> Option C
  4. Quick Check:

    Assignment uses = in C# [OK]
Hint: Use single = for assignment in C# [OK]
Common Mistakes:
  • Using == instead of = for assignment
  • Using invalid operators like => or <-
  • Confusing assignment with comparison
3. What will be the output of the following C# code snippet?
class Node {
  public int data;
  public Node next;
  public Node(int d) { data = d; next = null; }
}

Node head = new Node(5);
head.next = new Node(10);
head.next.next = new Node(15);

Node current = head;
bool found = false;
while (current != null) {
  if (current.data == 10) {
    found = true;
    break;
  }
  current = current.next;
}
Console.WriteLine(found);
medium
A. NullReferenceException
B. False
C. Compilation error
D. True

Solution

  1. Step 1: Trace the linked list nodes and search loop

    The list has nodes with data 5 -> 10 -> 15. The loop checks each node's data for 10.
  2. Step 2: Check when the value 10 is found

    At second node, data is 10, so found becomes true and loop breaks.
  3. Final Answer:

    True -> Option D
  4. Quick Check:

    Value 10 found = True [OK]
Hint: Stop loop when value found, print true [OK]
Common Mistakes:
  • Forgetting to break loop after finding value
  • Printing current.data instead of found
  • Null pointer errors if next not checked
4. Identify the error in the following code that searches for a value in a linked list:
Node current = head;
while (current.next != null) {
  if (current.data == 20) {
    Console.WriteLine("Found");
    break;
  }
  current = current.next;
}
medium
A. It skips checking the last node
B. It causes infinite loop
C. It throws NullReferenceException immediately
D. It never enters the loop

Solution

  1. Step 1: Analyze the loop condition

    The loop runs while current.next != null, so it stops before last node.
  2. Step 2: Understand impact on search

    The last node's data is never checked, so search may miss the value if it's there.
  3. Final Answer:

    It skips checking the last node -> Option A
  4. Quick Check:

    Loop condition misses last node [OK]
Hint: Use current != null to check all nodes [OK]
Common Mistakes:
  • Using current.next != null instead of current != null
  • Assuming last node is checked automatically
  • Not handling empty list (head null)
5. Given a linked list where nodes may contain duplicate values, how can you modify the search to return the count of occurrences of a target value x instead of just checking presence?
hard
A. Traverse all nodes, increment count when node.data == x, then return count
B. Stop at first occurrence and return 1
C. Use recursion to find only the last occurrence
D. Delete nodes with value x and return total nodes left

Solution

  1. Step 1: Understand the need to count all occurrences

    Since duplicates exist, we must check every node to count all matches.
  2. Step 2: Traverse entire list and count matches

    Loop through each node, increment a counter when node.data equals x, then return the count.
  3. Final Answer:

    Traverse all nodes, increment count when node.data == x, then return count -> Option A
  4. Quick Check:

    Count all matches by full traversal [OK]
Hint: Count matches by checking every node [OK]
Common Mistakes:
  • Stopping search after first match
  • Using recursion incorrectly for counting
  • Modifying list during search unintentionally
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard