📖 Scenario: You are managing a playlist of songs where each song is linked to the previous and next song. Sometimes, you want to remove the first song from the playlist.
🎯 Goal: Build a doubly linked list with three songs, then delete the first song from the list, and finally print the remaining songs in order.
📋 What You'll Learn
Create a doubly linked list with nodes containing the exact song titles: "SongA", "SongB", "SongC"
Implement a method to delete the first node from the doubly linked list
Print the list after deletion showing the song titles in order separated by ' <-> ' and ending with 'null'
💡 Why This Matters
🌍 Real World
Doubly linked lists are used in music players, browsers, and other applications where you need to move forward and backward through items.
💼 Career
Understanding linked list operations like deletion is fundamental for software development roles involving data structures and memory management.
Progress0 / 4 steps
1
Create a Doubly Linked List with Three Songs
Create a class called Node with public string Data, Node Prev, and Node Next. Then create three nodes with Data values "SongA", "SongB", and "SongC". Link them to form a doubly linked list: SongA <-> SongB <-> SongC. Finally, create a variable head pointing to the first node (SongA).
DSA C#
Hint
Define the Node class first. Then create three nodes and link their Next and Prev pointers accordingly. Set head to the first node.
2
Add a Method to Delete the First Node
Create a method called DeleteFromBeginning that takes a Node called head and returns the new head after deleting the first node. If the list is empty, return null. If there is a next node, update its Prev to null. Return the new head node.
DSA C#
Hint
Check if head is null. If not, move head to head.Next. If the new head exists, set its Prev to null. Return the new head.
3
Delete the First Node from the List
Call the method DeleteFromBeginning with the variable head and update head with the returned value.
DSA C#
Hint
Assign head to the result of calling DeleteFromBeginning(head).
4
Print the Doubly Linked List After Deletion
Use a Node variable current starting at head. Use a while loop to traverse the list. Print each node's Data followed by " <-> " if there is a next node, else print " -> null" at the end.
DSA C#
Hint
Traverse from head using a while loop. Print each Data. Print " <-> " if there is a next node, else print " -> null" at the end.
Practice
(1/5)
1. What happens to the head pointer when you delete the first node from a doubly linked list?
easy
A. It becomes null immediately
B. It remains unchanged
C. It points to the last node
D. It moves to the second node in the list
Solution
Step 1: Understand the role of head pointer
The head pointer always points to the first node in the doubly linked list.
Step 2: Effect of deleting the first node
When the first node is deleted, the head pointer must move to the next node, which becomes the new first node.
Final Answer:
It moves to the second node in the list -> Option D
Quick Check:
Head points to new first node after deletion [OK]
Hint: Head always points to the first node after deletion [OK]
Common Mistakes:
Assuming head becomes null even if list has more nodes
Not updating head pointer after deletion
Pointing head to last node mistakenly
2. Which of the following is the correct syntax to delete the first node in a doubly linked list in C#?
easy
A. head = head.next; head.prev = null;
B. head = head.prev; head.next = null;
C. head.next = null; head.prev = null;
D. head = null; head.next = null;
Solution
Step 1: Move head to next node
To delete the first node, assign head to head.next to point to the second node.
Step 2: Remove backward link
Set head.prev to null to disconnect the previous first node.
Final Answer:
head = head.next; head.prev = null; -> Option A
Quick Check:
Correct syntax updates head and prev pointer [OK]
Hint: Set head to next and prev of new head to null [OK]
Common Mistakes:
Setting head.prev instead of head.next
Not nullifying prev pointer of new head
Setting head to null prematurely
3. Given the doubly linked list: 10 <-> 20 <-> 30 <-> null, what will be the list after deleting the first node?
medium
A. 10 <-> 30 <-> null
B. 20 <-> 30 <-> null
C. 30 <-> null
D. null
Solution
Step 1: Identify the first node
The first node has value 10, which will be removed.
Step 2: Update head to second node
Head moves to node with value 20, and its prev pointer is set to null.
Final Answer:
20 <-> 30 <-> null -> Option B
Quick Check:
First node removed, list starts at 20 [OK]
Hint: After deletion, head points to second node [OK]
Common Mistakes:
Removing wrong node (like 20 or 30)
Not updating prev pointer of new head
Leaving old head in the list
4. Consider this code snippet to delete the first node from a doubly linked list:
if (head != null) {
head = head.next;
head.prev = null;
}
What error can occur here?
medium
A. Logical error: head should not be updated
B. Syntax error due to missing semicolon
C. NullReferenceException if list has only one node
D. No error, code is correct
Solution
Step 1: Analyze when list has one node
If list has one node, head.next is null after assignment.
Step 2: Accessing head.prev causes error
Setting head.prev = null when head is null causes NullReferenceException.
Final Answer:
NullReferenceException if list has only one node -> Option C
Quick Check:
Accessing property on null causes exception [OK]
Hint: Check if head is null before setting head.prev [OK]
Common Mistakes:
Not checking if head is null after moving to next
Assuming code always works for single-node list
Ignoring runtime exceptions
5. You have a doubly linked list with nodes: 5 <-> 15 <-> 25 <-> 35 <-> null. After deleting the first node twice, what is the resulting list?
hard
A. 25 <-> 35 <-> null
B. 15 <-> 25 <-> 35 <-> null
C. 35 <-> null
D. null
Solution
Step 1: Delete first node once
First deletion removes node with value 5; head moves to 15.
Step 2: Delete first node second time
Second deletion removes node with value 15; head moves to 25.
Final Answer:
25 <-> 35 <-> null -> Option A
Quick Check:
Two deletions remove first two nodes [OK]
Hint: Each deletion moves head to next node [OK]
Common Mistakes:
Deleting only once instead of twice
Not updating head correctly after second deletion
Confusing node values order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.