📖 Scenario: You are working on a simple contact list app. Each contact is stored as a node in a linked list. You want to find if a contact with a specific name exists in the list.
🎯 Goal: Build a linked list with three contacts, set a target name to search for, write code to search the linked list for that name, and print whether the contact was found or not.
📋 What You'll Learn
Create a linked list with nodes containing the names 'Alice', 'Bob', and 'Charlie' in that order.
Create a variable called targetName and set it to 'Bob'.
Write a loop to search the linked list for targetName.
Print 'Found' if the name is in the list, otherwise print 'Not Found'.
💡 Why This Matters
🌍 Real World
Linked lists are used in many apps to store ordered data where items can be added or removed easily, like contact lists or playlists.
💼 Career
Understanding linked lists and how to search them is a fundamental skill for software developers, especially when working with data structures and algorithms.
Progress0 / 4 steps
1
Create the linked list nodes
Create three linked list nodes named node1, node2, and node3. Set node1.value to 'Alice', node2.value to 'Bob', and node3.value to 'Charlie'. Link them so that node1.next is node2, and node2.next is node3. Set node3.next to null.
DSA Javascript
Hint
Each node is an object with value and next properties. Link nodes by setting next to the next node or null if last.
2
Set the target name to search
Create a variable called targetName and set it to the string 'Bob'.
DSA Javascript
Hint
Use const targetName = 'Bob'; to store the name you want to find.
3
Search the linked list for the target name
Write a while loop using a variable current starting at node1. In each loop, check if current.value equals targetName. If yes, set a variable found to true and break the loop. If not, move current to current.next. Before the loop, set found to false.
DSA Javascript
Hint
Use a while loop to move through the list until current is null. Check each node's value against targetName.
4
Print the search result
Write a console.log statement that prints 'Found' if found is true, otherwise prints 'Not Found'.
DSA Javascript
Hint
Use an if statement to check found and print the correct message.
Practice
(1/5)
1. What is the main purpose of searching for a value in a linked list?
easy
A. To find if the value exists in the list
B. To add a new node at the end
C. To delete the first node
D. To reverse the linked list
Solution
Step 1: Understand the search operation
Searching in a linked list means checking each node to see if it contains the target value.
Step 2: Identify the goal of searching
The goal is to find whether the value exists anywhere in the list, not to modify the list.
Final Answer:
To find if the value exists in the list -> Option A
Quick Check:
Search means find value presence = C [OK]
Hint: Search means check nodes for value presence [OK]
Common Mistakes:
Confusing search with insertion or deletion
Thinking search changes the list
Assuming search reverses the list
2. Which of the following is the correct way to start searching a linked list in JavaScript if head is the first node?
easy
A. let current = null;
B. let current = head;
C. let current = head.next.next;
D. let current = head.value;
Solution
Step 1: Understand the starting point of search
Search starts from the first node, so we assign the first node to a variable to traverse.
Step 2: Choose the correct assignment
Assigning head to current lets us start from the first node and move forward.
Final Answer:
let current = head; -> Option B
Quick Check:
Start search at head node = B [OK]
Hint: Start search at head node with let current = head [OK]
Common Mistakes:
Starting at null means no nodes to check
Skipping nodes by starting at head.next.next
Assigning value instead of node reference
3. What will be the output of the following code snippet?
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
const head = new Node(5);
head.next = new Node(10);
head.next.next = new Node(15);
function search(head, target) {
let current = head;
while (current !== null) {
if (current.value === target) {
return true;
}
current = current.next;
}
return false;
}
console.log(search(head, 10));
console.log(search(head, 20));
medium
A. true\ntrue
B. false\ntrue
C. true\nfalse
D. false\nfalse
Solution
Step 1: Trace search for value 10
Nodes are 5 -> 10 -> 15. The search finds 10 in the second node and returns true.
Step 2: Trace search for value 20
20 is not in the list, so the loop ends and returns false.
Final Answer:
true\nfalse -> Option C
Quick Check:
10 found = true, 20 not found = false [OK]
Hint: Return true if found, else false after full traversal [OK]
Common Mistakes:
Returning false too early
Not updating current to next node
Confusing value with node reference
4. Identify the error in the following search function for a linked list:
function search(head, target) {
let current = head;
while (current.next !== null) {
if (current.value === target) {
return true;
}
current = current.next;
}
return false;
}
medium
A. It does not check the last node's value
B. It uses incorrect variable names
C. It returns true too early
D. It never updates current
Solution
Step 1: Analyze the loop condition
The loop runs while current.next !== null, so it stops before the last node.
Step 2: Check if last node is checked
The last node's value is never checked because loop ends early, so search may miss target at last node.
Final Answer:
It does not check the last node's value -> Option A
Quick Check:
Loop misses last node check = D [OK]
Hint: Loop until current is null, not current.next [OK]
Common Mistakes:
Using current.next !== null instead of current !== null
Forgetting to check last node
Assuming loop covers all nodes
5. Given a linked list where each node contains a number, how would you modify the search function to return the position (1-based) of the first occurrence of a target value, or -1 if not found?
hard
A. Reverse the list before searching for the value
B. Return true if value found; else false
C. Count total nodes first; then search for value
D. Initialize a position counter at 1; traverse nodes; return position if value matches; else -1
Solution
Step 1: Add a position counter starting at 1
Initialize a variable to track the current node's position as you traverse the list.
Step 2: Traverse and compare values
For each node, check if its value matches the target. If yes, return the current position.
Step 3: Return -1 if not found
If traversal ends without finding the target, return -1 to indicate absence.
Final Answer:
Initialize a position counter at 1; traverse nodes; return position if value matches; else -1 -> Option D
Quick Check:
Position tracking with traversal = A [OK]
Hint: Track position while searching; return position or -1 [OK]
Common Mistakes:
Returning boolean instead of position
Not updating position counter
Reversing list unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.