📖 Scenario: You are managing a simple list of tasks using a singly linked list. Sometimes, you need to remove the last task from the list when it is completed.
🎯 Goal: Build a singly linked list and write code to delete the last node (task) from the list.
📋 What You'll Learn
Create a singly linked list with exactly 4 nodes containing integer values 10, 20, 30, and 40 in that order.
Create a method called DeleteAtEnd that removes the last node from the linked list.
Print the linked list after deleting the last node to show the updated list.
💡 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 developers working with data structures, memory management, and algorithm optimization.
Progress0 / 4 steps
1
Create the singly linked list with 4 nodes
Create a class called Node with an integer data and a Node next reference. Then create a linked list with 4 nodes containing the values 10, 20, 30, and 40 linked in that order. Store the first node in a variable called head.
DSA C#
Hint
Start by defining the Node class with data and next. Then link nodes one by one.
2
Create the DeleteAtEnd method
Create a method called DeleteAtEnd that takes the head node as input and deletes the last node from the linked list. The method should return the updated head node.
DSA C#
Hint
Check if the list is empty or has one node. Then find the second last node and set its next to null.
3
Call DeleteAtEnd to remove the last node
Call the DeleteAtEnd method with the head node and update head with the returned value.
DSA C#
Hint
Assign the result of DeleteAtEnd(head) back to head.
4
Print the linked list after deletion
Write a PrintList method that takes head and prints all node values separated by -> and ending with null. Then call PrintList(head) to display the updated list.
DSA C#
Hint
Traverse the list and print each node's data followed by ->. End with null.
Practice
(1/5)
1. What does the operation Delete Node at End do in a singly linked list?
easy
A. Adds a new node at the end of the list
B. Removes the first node from the list
C. Removes the last node from the list
D. Adds a new node at the beginning of the list
Solution
Step 1: Understand the operation meaning
Deleting a node at the end means removing the last node in the linked list.
Step 2: Compare options with operation
Only Removes the last node from the list matches removing the last node; others add or remove nodes elsewhere.
Final Answer:
Removes the last node from the 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
Assuming it deletes a middle node
2. Which of the following is the correct syntax to delete the last node in a singly linked list in C#?
easy
A. Create a new node and assign it to last node
B. Set head to null directly
C. Set last node's next to head
D. Traverse to second last node, set its next to null
Solution
Step 1: Identify correct deletion method
To delete last node, we must reach second last node and set its next pointer to null.
Step 2: Check options for this logic
Traverse to second last node, set its next to null matches this logic; others do unrelated actions.
Final Answer:
Traverse to second last node, 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 [OK]
Common Mistakes:
Setting head to null deletes whole list
Trying to set last node's next to head causes cycle
Creating new node does not delete existing node
3. Given the linked list: 10 -> 20 -> 30 -> 40 -> null, what will be the list after deleting the node at the end?
medium
A. 10 -> 20 -> 30 -> 40 -> null
B. 10 -> 20 -> 30 -> null
C. 20 -> 30 -> 40 -> null
D. 10 -> 20 -> null
Solution
Step 1: Identify last node in list
The last node is 40 in the list 10 -> 20 -> 30 -> 40 -> null.
Step 2: Remove last node and update list
Deleting last node removes 40, so list becomes 10 -> 20 -> 30 -> null.
Final Answer:
10 -> 20 -> 30 -> null -> Option B
Quick Check:
Last node 40 removed = 10->20->30->null [OK]
Hint: Remove last value to get new list [OK]
Common Mistakes:
Not removing last node, list unchanged
Removing first node instead
Removing more than one node accidentally
4. Consider this code snippet to delete the last node of a singly linked list:
Node current = head;
while(current.next.next != null) {
current = current.next;
}
current.next = null;
What error can occur when this code runs on a list with only one node?
medium
A. NullReferenceException because current.next.next is invalid
B. No error, code works fine
C. Infinite loop because condition never false
D. Deletes the head node incorrectly
Solution
Step 1: Analyze condition for single node list
If list has one node, current.next is null, so current.next.next causes error.
Step 2: Identify exception type
Accessing next of null causes NullReferenceException in C#.
Final Answer:
NullReferenceException because current.next.next is invalid -> Option A
Quick Check:
Single node list causes null.next access error [OK]
Hint: Check for null before accessing next.next [OK]
Common Mistakes:
Ignoring null check for single node
Assuming loop runs safely always
Thinking it deletes head node
5. You have a singly linked list with nodes: 5 -> 15 -> 25 -> 35 -> 45 -> null. Write a method to delete the last node and return the updated list. Which of the following code snippets correctly implements this?
hard
A. if (head == null) return null;
if (head.next == null) return null;
Node current = head;
while (current.next.next != null) {
current = current.next;
}
current.next = null;
return head;
B. if (head == null) return null;
Node current = head;
while (current.next != null) {
current = current.next;
}
current = null;
return head;
C. if (head == null) return null;
Node current = head;
while (current.next.next != null) {
current = current.next;
}
current.next = current;
return head;
D. if (head == null) return null;
head = head.next;
return head;
Solution
Step 1: Handle empty and single node cases
If list is empty or has one node, deleting last node returns null (empty list).
Step 2: Traverse to second last node and delete last
Loop until current.next.next is null, then set current.next to null to remove last node.
Step 3: Return updated head
Return head pointer to updated list.
Final Answer:
Code snippet D correctly deletes last node and returns updated list -> Option A
Quick Check:
Check null, traverse to second last, set next null [OK]
Hint: Check list size, then remove last by second last next = null [OK]
Common Mistakes:
Setting current to null does not remove last node
Assigning current.next to current creates cycle
Deleting head instead of last node
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.