📖 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 updated playlist.
📋 What You'll Learn
Create a doubly linked list with three nodes containing the exact song names: 'Song1', 'Song2', 'Song3'.
Create a variable called head pointing to the first node.
Write a function called delete_from_beginning that removes the first node from the doubly linked list.
Print the updated list starting from head after deletion.
💡 Why This Matters
🌍 Real World
Doubly linked lists are used in music players, web browsers (back and forward navigation), and undo-redo features where you need to move both forward and backward.
💼 Career
Understanding how to manipulate doubly linked lists is important for software engineers working on systems that require efficient insertions and deletions from both ends, such as caches and navigation history.
Progress0 / 4 steps
1
Create the Doubly Linked List with Three Songs
Create a class called Node with attributes data, prev, and next. Then create three nodes with data 'Song1', 'Song2', and 'Song3'. Link them to form a doubly linked list and set head to the first node.
DSA Python
Hint
Remember to link nodes both ways: next and prev.
2
Create a Function to Delete from Beginning
Create a function called delete_from_beginning that takes head as input and returns the new head after deleting the first node. If the list is empty, return None. If there is a next node, update its prev to None.
DSA Python
Hint
Check if head is None first. Then update new_head.prev to None if it exists.
3
Delete the First Node from the List
Call the function delete_from_beginning with the variable head and update head with the returned new head.
DSA Python
Hint
Assign the result of delete_from_beginning(head) back to head.
4
Print the Updated Doubly Linked List
Use a while loop with a variable current starting at head to print the data of each node separated by -> . End the print with null.
DSA Python
Hint
Use a loop to print each node's data followed by -> , then 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 moves to the second node in the list
B. It becomes null immediately
C. It points to the last node in the list
D. It remains pointing to the deleted node
Solution
Step 1: Understand the head pointer role
The head pointer always points to the first node in the list.
Step 2: After deleting the first node
The head must move to the next node, which becomes the new first node.
Final Answer:
It moves to the second node in the list -> Option A
Quick Check:
Head points to new first node after deletion [OK]
Hint: Head always points to the first node, update after deletion [OK]
Common Mistakes:
Not updating head pointer after deletion
Setting head to null even if list has more nodes
Leaving head pointing to deleted node
2. Which of the following is the correct syntax to delete the first node in a doubly linked list in Python?
easy
A. head = None; head.next = None
B. head.prev = None; head = head.next
C. head = head.next; head.prev = None
D. head.next = None; head = head.prev
Solution
Step 1: Move head to next node
Assign head = head.next to move head forward.
Step 2: Remove backward link
Set head.prev = None to disconnect previous first node.
Final Answer:
head = head.next; head.prev = None -> Option C
Quick Check:
Update head then clear prev link [OK]
Hint: Update head first, then clear prev pointer [OK]
Common Mistakes:
Setting prev before moving head
Trying to set next of head to None incorrectly
Setting head to None without updating
3. What will be the output linked list after deleting the first node from this doubly linked list?
Initial list: 10 <-> 20 <-> 30 <-> null
Code snippet:
head = head.next
head.prev = None
medium
A. 20 <-> 30 <-> null
B. 10 <-> 30 <-> null
C. 30 <-> null
D. null
Solution
Step 1: Move head to second node
Head moves from 10 to 20.
Step 2: Remove backward link of new head
Set 20.prev = None, disconnecting 10.
Final Answer:
20 <-> 30 <-> null -> Option A
Quick Check:
First node removed, list starts at 20 [OK]
Hint: After deletion, head points to second node [OK]
Common Mistakes:
Forgetting to set prev to None
Incorrectly skipping nodes
Outputting original list without change
4. Identify the error in this code snippet for deleting the first node of a doubly linked list:
if head is not None:
head = head.next
head.prev = None
medium
A. No error, code is correct
B. head.prev = None causes error if head.next is None
C. head = head.next should be after setting prev to None
D. Missing deletion of the old head node
Solution
Step 1: Check head.next for None
If head.next is None, head becomes None after assignment.
Step 2: Setting head.prev causes error
Trying to set head.prev = None when head is None causes AttributeError.
Final Answer:
head.prev = None causes error if head.next is None -> Option B
Quick Check:
Check for None before setting prev [OK]
Hint: Check if head is None before setting head.prev [OK]
Common Mistakes:
Not checking if head.next is None
Assuming list has more than one node always
Ignoring possible AttributeError
5. Given a doubly linked list with nodes: 5 <-> 15 <-> 25 <-> 35 <-> null, after deleting the first node twice, what will be the resulting list?
hard
A. null
B. 15 <-> 25 <-> 35 <-> null
C. 35 <-> null
D. 25 <-> 35 <-> null
Solution
Step 1: First deletion moves head from 5 to 15
After first deletion, list is 15 <-> 25 <-> 35 <-> null.
Step 2: Second deletion moves head from 15 to 25
After second deletion, list is 25 <-> 35 <-> null.
Final Answer:
25 <-> 35 <-> null -> Option D
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 each deletion
Confusing node values or order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.