Bird
0
0
DSA Cprogramming~10 mins

Delete Node at Beginning in DSA C - Execution Trace

Choose your learning style9 modes available
Concept Flow - Delete Node at Beginning
Start
Check if list is empty?
YesNothing to delete, EXIT
No
Save pointer to first node
Move head to second node
Free memory of old first node
Return updated list
END
This flow checks if the list is empty, then removes the first node by moving the head pointer and freeing the old node.
Execution Sample
DSA C
struct Node {
    int data;
    struct Node* next;
};

void deleteAtBeginning(struct Node** head) {
    if (*head == NULL) return;
    struct Node* temp = *head;
    *head = (*head)->next;
    free(temp);
}
This code deletes the first node of a singly linked list by updating the head pointer and freeing the old first node.
Execution Table
StepCondition (*head == NULL)ActionHead Node DataList State
1FalseSave temp = head (Node with data 10)1010 -> 20 -> 30 -> NULL
2N/AMove head to next node (20)2020 -> 30 -> NULL
3N/AFree old first node (10)2020 -> 30 -> NULL
4N/AReturn updated list2020 -> 30 -> NULL
5N/AExit2020 -> 30 -> NULL
💡 Head moved to second node; old first node freed; list updated.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
*head10 -> 20 -> 30 -> NULL10 -> 20 -> 30 -> NULL20 -> 30 -> NULL20 -> 30 -> NULL20 -> 30 -> NULL
tempN/A10 -> 20 -> 30 -> NULL10 -> 20 -> 30 -> NULLFreedFreed
Key Moments - 3 Insights
Why do we check if the list is empty before deleting?
Because if the list is empty (*head == NULL), there is no node to delete. The execution_table row 1 shows this check prevents errors.
Why do we save the first node in a temporary variable before moving the head?
We save it to free its memory later. If we move head first, we lose reference to the old node and can't free it. See execution_table steps 1 and 3.
What happens to the list after deleting the first node?
The head points to the second node, effectively removing the first node from the list. The list state changes from '10 -> 20 -> 30' to '20 -> 30' as shown in execution_table steps 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the head node data after step 2?
A20
B10
C30
DNULL
💡 Hint
Check the 'Head Node Data' column at step 2 in the execution_table.
At which step is the old first node freed?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look for the action mentioning 'Free old first node' in the execution_table.
If the list was empty initially, what would happen at step 1?
AThe function would free a node
BThe function would return immediately without changes
CThe function would move head to next node
DThe function would crash
💡 Hint
Refer to the condition check '*head == NULL' in execution_table step 1.
Concept Snapshot
Delete Node at Beginning:
- Check if list is empty (*head == NULL)
- Save first node in temp
- Move head to second node
- Free old first node
- Updated list starts from new head
Full Transcript
This concept shows how to delete the first node of a singly linked list in C. First, we check if the list is empty to avoid errors. If not empty, we save the first node in a temporary pointer. Then, we move the head pointer to the second node. After that, we free the memory of the old first node to avoid memory leaks. Finally, the list starts from the new head node. The execution table traces these steps with the list initially containing nodes with data 10, 20, and 30. After deletion, the list starts at 20. The variable tracker shows how the head pointer and temp variable change during execution. Key moments clarify why each step is important. The visual quiz tests understanding of the head pointer's value and the freeing step.