📖 Scenario: You are managing a simple list of tasks using a linked list. Sometimes, you need to remove the first task when it is completed.
🎯 Goal: Build a program that creates a linked list with three tasks, deletes the first task (node) from the list, and then prints the remaining tasks.
📋 What You'll Learn
Create a linked list with exactly three nodes containing the values 10, 20, and 30 in that order.
Write a function called deleteAtBeginning that removes the first node from the linked list.
Print the linked list after deleting the first node in the format: 10 -> 20 -> 30 -> NULL before deletion and 20 -> 30 -> NULL after deletion.
💡 Why This Matters
🌍 Real World
Linked lists are used in many applications like task scheduling, undo functionality in editors, and managing playlists where items are added or removed dynamically.
💼 Career
Understanding linked list operations like deletion is fundamental for software developers working with dynamic data structures, memory management, and system programming.
Progress0 / 4 steps
1
Create a linked list with three nodes
Create a linked list with three nodes containing the values 10, 20, and 30 in that order. Use a struct Node with an int data and a struct Node* next. Create a pointer called head that points to the first node.
DSA C
Hint
Remember to allocate memory for each node using malloc and link them by setting the next pointer.
2
Write a function to delete the first node
Write a function called deleteAtBeginning that takes a pointer to the pointer head of the linked list and deletes the first node. It should update head to point to the second node and free the memory of the removed node.
DSA C
Hint
Use a temporary pointer to hold the first node, update *head to the second node, then free the first node.
3
Call the delete function and prepare to print
In the main function, call deleteAtBeginning with the address of head to delete the first node. Then, create a pointer called current and set it to head to prepare for printing the list.
DSA C
Hint
Call the function with &head and then set current to head for traversal.
4
Print the linked list after deletion
Use a while loop with the pointer current to print the linked list nodes' data separated by ->. After the last node, print NULL. The output should be: 20 -> 30 -> NULL
DSA C
Hint
Use a while loop to print each node's data followed by ->, and print NULL at the end.
Practice
(1/5)
1. What happens to the linked list when you delete the node at the beginning?
easy
A. All nodes are deleted at once.
B. The last node is deleted instead of the first.
C. The list remains unchanged.
D. The head pointer moves to the next node, removing the first node.
Solution
Step 1: Understand the head pointer role
The head pointer points to the first node in the linked list.
Step 2: Effect of deleting the first node
Deleting the first node means moving the head pointer to the second node, effectively removing the first node from the list.
Final Answer:
The head pointer moves to the next node, removing the first node. -> Option D
Quick Check:
Deleting at beginning means head moves forward [OK]
Hint: Deleting at start moves head to next node [OK]
Common Mistakes:
Thinking the last node is deleted
Assuming the list stays the same
Deleting all nodes instead of one
2. Which of the following is the correct syntax to delete the first node in a singly linked list in C?
easy
A. temp = head; head = head->next; free(temp);
B. head = head->next; free(head);
C. free(head); head = head->next;
D. head->next = NULL; free(head);
Solution
Step 1: Store current head in temp
We save the current head node in a temporary pointer to free it later.
Step 2: Move head to next node and free old head
Update head to point to the next node, then free the old head stored in temp.
Final Answer:
temp = head; head = head->next; free(temp); -> Option A
Quick Check:
Save old head, move head, free old [OK]
Hint: Save old head before moving and freeing [OK]
Common Mistakes:
Freeing head before moving pointer
Not saving old head before moving
Setting next to NULL incorrectly
3. What will be the output linked list after deleting the first node from the list: 10 -> 20 -> 30 -> NULL?
medium
A. 10 -> 20 -> 30 -> NULL
B. NULL
C. 20 -> 30 -> NULL
D. 30 -> NULL
Solution
Step 1: Identify the first node
The first node has value 10.
Step 2: Delete first node and move head
After deletion, head points to node with value 20, so list starts from 20.
Final Answer:
20 -> 30 -> NULL -> Option C
Quick Check:
First node removed, next node becomes head [OK]
Hint: After deletion, list starts from second node [OK]
Common Mistakes:
Not updating head pointer
Deleting wrong node
Assuming list becomes empty
4. Consider this code snippet to delete the first node:
struct Node* temp = head;
head = head->next;
free(head);
What is the error in this code?
medium
A. It frees the new head instead of the old head.
B. It does not update the head pointer.
C. It frees the temp pointer instead of head.
D. It causes a syntax error.
Solution
Step 1: Analyze pointer usage
temp stores old head, head moves to next node.
Step 2: Identify which node is freed
free(head) frees the new head, not the old node stored in temp, causing memory error.
Final Answer:
It frees the new head instead of the old head. -> Option A
Quick Check:
Free old node, not new head [OK]
Hint: Free the saved old head pointer, not the updated head [OK]
Common Mistakes:
Freeing updated head instead of old node
Not freeing any node causing memory leak
Confusing temp and head pointers
5. You have a singly linked list with nodes: 5 -> 15 -> 25 -> 35 -> NULL. After deleting the first node twice, what will be the resulting list?
hard
A. 15 -> 25 -> 35 -> NULL
B. 25 -> 35 -> NULL
C. 35 -> NULL
D. NULL
Solution
Step 1: Delete first node once
First deletion removes 5, list becomes 15 -> 25 -> 35 -> NULL.
Step 2: Delete first node again
Second deletion removes 15, list becomes 25 -> 35 -> NULL.
Final Answer:
25 -> 35 -> NULL -> Option B
Quick Check:
Two deletions remove first two nodes [OK]
Hint: Each deletion moves head forward by one node [OK]
Common Mistakes:
Deleting only once instead of twice
Confusing node values after deletion
Assuming list becomes empty too soon
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.