📖 Scenario: Imagine you have a list of your favorite books arranged one after another. You want to find if a certain book is in your list.
🎯 Goal: You will create a simple linked list of book names and write code to search for a specific book in that list.
📋 What You'll Learn
Create a linked list with exactly these book names in order: 'Harry Potter', 'The Hobbit', '1984', 'Pride and Prejudice', 'To Kill a Mockingbird'
Create a variable called search_book with the value '1984'
Write a function called search_linked_list that takes the head of the linked list and a book name, and returns True if the book is found, otherwise False
Print Found if the book is in the list, or Not Found if it is not
💡 Why This Matters
🌍 Real World
Linked lists are used in many applications like music playlists, photo galleries, and undo features where items are connected in order.
💼 Career
Understanding linked lists and how to search them is a fundamental skill for software developers working with data structures and algorithms.
Progress0 / 4 steps
1
Create the linked list
Create a class called Node with attributes data and next. Then create the linked list with nodes containing these book names in order: 'Harry Potter', 'The Hobbit', '1984', 'Pride and Prejudice', 'To Kill a Mockingbird'. Assign the first node to a variable called head.
DSA Python
Hint
Start by defining the Node class with data and next. Then create each node with the exact book names and link them using the next attribute.
2
Set the book to search for
Create a variable called search_book and set it to the string '1984'.
DSA Python
Hint
Just create a variable named search_book and assign it the string '1984'.
3
Write the search function
Write a function called search_linked_list that takes two parameters: head (the start of the linked list) and target (the book name to find). The function should check each node's data and return True if target is found, otherwise False.
DSA Python
Hint
Use a while loop to go through each node starting from head. Compare current.data with target. Return True if found, else continue. Return False if you reach the end.
4
Print the search result
Use the search_linked_list function with head and search_book. Print 'Found' if the function returns True, otherwise print 'Not Found'.
DSA Python
Hint
Call search_linked_list(head, search_book). Use an if statement to print 'Found' if it returns True, else print 'Not Found'.
Practice
(1/5)
1. What does searching for a value in a linked list involve?
easy
A. Sorting the list first then searching for the value
B. Jumping directly to the middle node to find the value
C. Checking each node one by one until the value is found or list ends
D. Using an index to access the value directly
Solution
Step 1: Understand linked list traversal
Linked lists do not have indexes, so we must check nodes one by one from the start.
Step 2: Search each node for the value
We compare the target value with each node's data until we find a match or reach the end.
Final Answer:
Checking each node one by one until the value is found or list ends -> Option C
Quick Check:
Search = Sequential check [OK]
Hint: Traverse nodes sequentially to find the value [OK]
Common Mistakes:
Assuming direct access by index
Trying to jump to middle node without traversal
Sorting before searching in linked list
2. Which of the following is the correct way to start searching for a value in a singly linked list named head?
easy
A. current = head.next
B. current = head
C. current = None
D. current = head.prev
Solution
Step 1: Identify the starting node
Search starts from the first node, which is referenced by head.
Step 2: Assign current pointer correctly
Set current = head to begin traversal from the first node.
Final Answer:
current = head -> Option B
Quick Check:
Start at head node [OK]
Hint: Always start search from head node [OK]
Common Mistakes:
Starting from head.next skips first node
Setting current to None causes no traversal
Using head.prev in singly linked list (no prev pointer)
3. What will be the output of the following code?
class Node:
def __init__(self, data):
self.data = data
self.next = None
def search(head, target):
current = head
while current:
if current.data == target:
return True
current = current.next
return False
# Create linked list: 5 -> 10 -> 15 -> None
head = Node(5)
head.next = Node(10)
head.next.next = Node(15)
print(search(head, 10))
print(search(head, 20))
Hint: Return True immediately when value found [OK]
Common Mistakes:
Returning False too early
Not moving to next node correctly
Confusing True/False outputs
4. Find the error in this search function for a linked list:
def search(head, target):
current = head
while current.next:
if current.data == target:
return True
current = current.next
return False
medium
A. The loop condition should be while current, not while current.next
B. The return False should be inside the loop
C. The function should return the node, not True
D. The current pointer should start at head.next
Solution
Step 1: Analyze loop condition
Using while current.next skips checking the last node.
Step 2: Correct loop to include last node
Change to while current to check all nodes including last.
Final Answer:
The loop condition should be while current, not while current.next -> Option A
Quick Check:
Loop must check all nodes [OK]
Hint: Use while current to include last node in search [OK]
Common Mistakes:
Stopping before last node
Returning False too early
Starting current at head.next skips first node
5. You have a linked list with nodes containing values: 3 -> 7 -> 3 -> 9 -> None. You want to find if value 3 exists and also count how many times it appears. Which approach correctly combines search and count?
hard
A. Use recursion to find first 3, then stop
B. Search for 3 once, then traverse again to count occurrences
C. Sort the list first, then count consecutive 3s
D. Traverse the list once, increment count each time node data equals 3, then check if count > 0
Solution
Step 1: Traverse list once counting matches
Check each node; if data is 3, increase count.
Step 2: After traversal, check if count > 0
If count is more than zero, value 3 exists and count shows occurrences.
Final Answer:
Traverse the list once, increment count each time node data equals 3, then check if count > 0 -> Option D
Quick Check:
Single pass count and check [OK]
Hint: Count while searching in one pass [OK]
Common Mistakes:
Doing two separate traversals
Sorting linked list unnecessarily
Stopping after first find without counting all
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.