C - Delete the first node of the Linked List
In this method, the first node of the linked list is deleted. For example - if the given list is 10->20->30->40 and the first node is deleted, the list becomes 20->30->40.
Deleting the first node of the Linked List is very easy. If the head is not null then create a temp node pointing to head and move head to the next of head. Then delete the temp node.
The function pop_front is created for this purpose. It is a 3-step process.
void pop_front(struct Node** head_ref) { if(*head_ref != NULL) { //1. if head is not null, create a // temp node pointing to head struct Node *temp = *head_ref; //2. move head to next of head *head_ref = (*head_ref)->next; //3. delete temp node temp = NULL; } }
The below is a complete program that uses above discussed concept of deleting the first node of the linked list.
#include <stdio.h> #include <stdlib.h> //node structure struct Node { int data; struct Node* next; }; //Add new element at the end of the list void push_back(struct Node** n, int newElement) { struct Node *newNode, *temp; newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = newElement; newNode->next = NULL; if(*n == NULL) { *n = newNode; } else { temp = *n; while(temp->next != NULL) { temp = temp->next; } temp->next = newNode; } } //Delete first node of the list void pop_front(struct Node** head_ref) { if(*head_ref != NULL) { struct Node *temp = *head_ref; *head_ref = (*head_ref)->next; temp = NULL; } } //display the content of the list void PrintList(struct Node* head_ref) { struct Node* temp = head_ref; if(head_ref != NULL) { printf("The list contains: "); while (temp != NULL) { printf("%i ",temp->data); temp = temp->next; } printf("\n"); } else { printf("The list is empty.\n"); } } // test the code int main() { struct Node* MyList = NULL; //Add four elements in the list. push_back(&MyList, 10); push_back(&MyList, 20); push_back(&MyList, 30); push_back(&MyList, 40); PrintList(MyList); //Delete the first node pop_front(&MyList); PrintList(MyList); return 0; }
The above code will give the following output:
The list contains: 10 20 30 40 The list contains: 20 30 40