📖 Scenario: You are managing a playlist of songs using a doubly linked list. Each song is a node with a title. You want to remove the last song from the playlist.
🎯 Goal: Build a doubly linked list of songs and write code to delete the last song from the list.
📋 What You'll Learn
Create a doubly linked list with exactly three nodes containing song titles: "Song1", "Song2", and "Song3"
Create a variable called head that points to the first node
Write a method called DeleteFromEnd that removes the last node from the doubly linked list
Print the titles of the remaining songs from the head to the end after deletion
💡 Why This Matters
🌍 Real World
Doubly linked lists are used in music players, browsers, and other apps to manage sequences where you can move forward and backward easily.
💼 Career
Understanding linked lists and how to modify them is a key skill for software developers working with data structures and memory management.
Progress0 / 4 steps
1
Create the doubly linked list with three songs
Create a class called Node with public string Title, public NodeNext, and public NodePrev. Then create three nodes with titles "Song1", "Song2", and "Song3". Link them to form a doubly linked list. Finally, create a variable called head that points to the first node.
DSA C#
Hint
Remember to link each node's Next and Prev pointers correctly to form the doubly linked list.
2
Create a method to delete the last node
Create a method called DeleteFromEnd that takes a Node parameter called head and returns the updated head. This method should remove the last node from the doubly linked list.
DSA C#
Hint
Traverse to the last node, then update the previous node's Next pointer to null to remove the last node.
3
Call the delete method to remove the last song
Call the DeleteFromEnd method with the variable head and update head with the returned value.
DSA C#
Hint
Assign the result of DeleteFromEnd(head) back to head to update the list.
4
Print the remaining songs in the list
Use a Node variable called current to traverse from head to the end of the list. Print each node's Title on a separate line.
DSA C#
Hint
Use Console.WriteLine(current.Title); inside the loop to print each song title.
Practice
(1/5)
1. What happens when you delete the last node from a doubly linked list that has multiple nodes?
easy
A. The first node is deleted instead.
B. The head pointer is set to null.
C. The list becomes empty immediately.
D. The second last node becomes the new tail and its next pointer is set to null.
Solution
Step 1: Identify the last node and its previous node
In a doubly linked list, the last node's previous node is the second last node.
Step 2: Update the second last node's next pointer
Set the second last node's next pointer to null to remove the last node from the list.
Final Answer:
The second last node becomes the new tail and its next pointer is set to null. -> Option D
Quick Check:
Deleting last node updates tail's next to null [OK]
Hint: Last node's previous next pointer must be null after deletion [OK]
Common Mistakes:
Setting head to null instead of updating tail
Not updating the previous node's next pointer
Deleting the first node by mistake
2. Which of the following is the correct C# syntax to delete the last node from a doubly linked list named dll?
easy
A. dll.Head = dll.Head.Next; dll.Head.Previous = null;
B. dll.Tail = dll.Tail.Previous; dll.Tail.Next = null;
C. dll.Tail = null; dll.Head = null;
D. dll.Head.Previous = dll.Tail; dll.Tail.Next = dll.Head;
Solution
Step 1: Move tail pointer to previous node
Set dll.Tail to dll.Tail.Previous to remove the last node.
Step 2: Set new tail's next pointer to null
Update dll.Tail.Next to null to mark the end of the list.
Final Answer:
dll.Tail = dll.Tail.Previous; dll.Tail.Next = null; -> Option B
A. NullReferenceException when list has only one node
B. Syntax error due to missing braces
C. The head pointer is not updated
D. The list becomes circular
Solution
Step 1: Check deletion when only one node exists
If only one node exists, dll.Tail.Previous is null, so dll.Tail becomes null.
Step 2: Accessing dll.Tail.Next causes error
After setting dll.Tail to null, accessing dll.Tail.Next throws NullReferenceException.
Final Answer:
NullReferenceException when list has only one node -> Option A
Quick Check:
Accessing property on null tail causes error [OK]
Hint: Check for null tail before accessing Next [OK]
Common Mistakes:
Not handling single-node list case
Ignoring null checks before pointer access
Assuming head updates automatically
5. You have a doubly linked list with nodes: 10 <-> 20 <-> 30 <-> 40. After deleting the last node twice, what will be the list and the tail node's value?
hard
A. 10 <-> 20 -> null, Tail = 20
B. 10 <-> 20 <-> 30 -> null, Tail = 30
C. 10 -> null, Tail = 10
D. Empty list, Tail = null
Solution
Step 1: Initial list and first deletion
List is 10 <-> 20 <-> 30 <-> 40. Deleting last node removes 40, list becomes 10 <-> 20 <-> 30.
Step 2: Second deletion removes 30
After second deletion, list becomes 10 <-> 20, and tail points to node with value 20.
Final Answer:
10 <-> 20 -> null, Tail = 20 -> Option A
Quick Check:
Two deletions remove last two nodes [OK]
Hint: Each deletion removes tail, tail moves back [OK]
Common Mistakes:
Deleting only one node instead of two
Not updating tail after deletions
Confusing head and tail pointers
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.