📖 Scenario: Imagine you have a list of tasks to do, written on sticky notes linked one after another. You want to remove the last task from the list because it's already done.
🎯 Goal: You will build a simple singly linked list and write code to delete the last node (task) from it.
📋 What You'll Learn
Create a singly linked list with exactly three nodes containing values 10, 20, and 30
Create a variable called head that points to the first node
Write code to delete the last node from the linked list
Print the linked list after deletion in the format: 10 -> 20 -> null
💡 Why This Matters
🌍 Real World
Linked lists are used in many applications like task scheduling, undo functionality, and managing playlists where items are added or removed dynamically.
💼 Career
Understanding linked list operations like deleting nodes is fundamental for software development roles that involve data structure manipulation and memory management.
Progress0 / 4 steps
1
Create a singly linked list with three nodes
Create a class called Node with an __init__ method that takes data and sets self.data and self.next. Then create three nodes with values 10, 20, and 30. Link them so that the first node points to the second, and the second points to the third. Finally, create a variable called head that points to the first node.
DSA Python
Hint
Start by defining the Node class with data and next. Then create three nodes and link them.
2
Create a helper variable to track the current node
Create a variable called current and set it equal to head. This will help us move through the linked list.
DSA Python
Hint
We use current to walk through the list starting from head.
3
Delete the last node from the linked list
Write a while loop to move current until it reaches the second last node (where current.next.next is None). Then set current.next to None to remove the last node.
DSA Python
Hint
Keep moving current until the next node's next is None. Then remove the last node by setting current.next to None.
4
Print the linked list after deleting the last node
Create a variable called current and set it to head. Use a while loop to print each node's data followed by ->. Stop when current is None. After the loop, print null.
DSA Python
Hint
Use a loop to print each node's data followed by '->'. After the loop, print 'null' to show the end.
Practice
(1/5)
1. What is the main purpose of the Delete Node at End operation in a singly linked list?
easy
A. Remove the first node from the linked list
B. Add a new node at the end of the linked list
C. Remove the last node from the linked list
D. Reverse the linked list
Solution
Step 1: Understand the operation
The operation aims to remove a node from the end of the singly linked list.
Step 2: Identify the correct description
Removing the last node means deleting the tail node, not adding or reversing nodes.
Final Answer:
Remove the last node from the linked list -> Option C
Quick Check:
Delete Node at End = Remove last node [OK]
Hint: Deleting at end means removing the last node [OK]
Common Mistakes:
Confusing delete at end with delete at beginning
Thinking it adds a node instead of removing
Mixing up with reversing the list
2. Which of the following is the correct syntax to delete the last node in a singly linked list in Python?
easy
A. Set last node's next to head
B. Set head = null directly
C. Create a new node and assign it to head
D. Traverse to second last node and set its next to null
Solution
Step 1: Understand deletion at end
To delete the last node, we must find the second last node and make its next pointer null.
Step 2: Check each option
Setting head = null deletes the whole list, not just last node. Setting last node's next to head creates a cycle. Creating a new node and assigning to head adds a node, not deletes.
Final Answer:
Traverse to second last node and set its next to null -> Option D
Quick Check:
Delete last node = second last node next = null [OK]
Hint: Set second last node's next to null to delete last node [OK]
Common Mistakes:
Setting head to null deletes entire list
Creating cycles by wrong pointer assignments
Adding nodes instead of deleting
3. What will be the output linked list after deleting the last node from the list: 1 -> 2 -> 3 -> 4 -> null?
medium
A. 1 -> 2 -> 3 -> null
B. 1 -> 2 -> 3 -> 4 -> null
C. 2 -> 3 -> 4 -> null
D. 1 -> 2 -> null
Solution
Step 1: Identify the last node
The last node in the list is the node with value 4.
Step 2: Delete the last node
Removing node 4 means the new last node is 3, so the list ends at 3 with next as null.
Final Answer:
1 -> 2 -> 3 -> null -> Option A
Quick Check:
Last node 4 removed = 1 -> 2 -> 3 [OK]
Hint: Last node removed means list ends one node earlier [OK]
Common Mistakes:
Not updating second last node's next to null
Removing wrong node (like first node)
Confusing output with original list
4. Consider this code snippet to delete the last node of a singly linked list:
def delete_end(head):
if head is None:
return None
if head.next is None:
return None
temp = head
while temp.next is not None:
temp = temp.next
temp.next = None
return head
What is the error in this code?
medium
A. The loop never stops because condition is wrong
B. temp.next is null check misses second last node
C. It deletes the first node instead of last
D. No error, code works correctly
Solution
Step 1: Analyze the loop condition
The loop runs while temp.next is not null, so temp moves to the last node.
Step 2: Identify pointer update mistake
After loop, temp points to last node, but to delete last node, we need second last node to set its next to null. Here, temp.next = null sets last node's next to null, which is already null, so no deletion happens.
Final Answer:
temp.next is null check misses second last node -> Option B
Quick Check:
Must stop at second last node to delete last [OK]
Hint: Stop at second last node, not last, to delete end node [OK]
Common Mistakes:
Stopping loop at last node instead of second last
Not handling single node list correctly
Setting wrong pointers causing no deletion
5. Given a singly linked list with nodes 10 -> 20 -> 30 -> 40 -> 50 -> null, write the steps to delete the last node and then add a new node with value 60 at the end. What will be the final list?
hard
A. 10 -> 20 -> 30 -> 40 -> 60 -> null
B. 10 -> 20 -> 30 -> 40 -> 50 -> 60 -> null
C. 10 -> 20 -> 30 -> 40 -> null
D. 10 -> 20 -> 30 -> 40 -> 50 -> null
Solution
Step 1: Delete the last node (50)
Traverse to second last node (40) and set its next to null, removing 50.
Step 2: Add new node with value 60 at end
Traverse to last node (40) and set its next to new node with value 60, new node's next is null.
Final Answer:
10 -> 20 -> 30 -> 40 -> 60 -> null -> Option A
Quick Check:
Delete last 50, add 60 at end = 10->20->30->40->60 [OK]
Hint: Delete last node, then link new node at end [OK]
Common Mistakes:
Not updating second last node's next to null before adding
Appending new node without deleting last node
Confusing node values or order
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.