C Program for Deletion at the end of the Singly Linked List
Deletion at the end of the Singly Linked List
Deletion at the end of the singly linked list program in C is mentioned below along with the method to do it and the code as well.
In other words Remove or delete the last node of the Singly Linked List in C
Steps required for deleting the node:-
- If the Linked list has only one node then make head node null
- Else traverse to the end of the linked list
- While traversing store the previous node i.e. 2nd last node
- Change the next of 2nd last node to null
- Free/delete memory of the the last node
- Now, 2nd last node becomes the last node.
Shortcode for the same –
void deleteEnd (struct Node **head) { struct Node *temp = *head; struct Node *previous; // if there are no nodes in Linked List can't delete if (*head == NULL) { printf ("Linked List Empty, nothing to delete"); return; } // if Linked List has only 1 node if (temp - > next == NULL) { printf ("%d deleted\n", (*head) - > data); *head = NULL; return; } // else traverse to the last node while (temp - > next != NULL) { // store previous link node as we need to change its next val previous = temp; temp = temp - > next; } // Curr assign 2nd last node's next to Null previous - > next = NULL; // delete the last node printf ("%d deleted\n", temp - > data); free (temp); // 2nd last now becomes the last node }
C Code for deletion at the end of the Singly Linked List:-
Let us look at the code below for the same –
Run
#include<stdio.h> #include<stdlib.h> struct Node { int data; struct Node *next; }; void deleteEnd (struct Node **head) { struct Node *temp = *head; struct Node *previous; // if there are no nodes in Linked List can't delete if (*head == NULL) { printf ("Linked List Empty, nothing to delete"); return; } // if Linked List has only 1 node if (temp->next == NULL) { printf ("%d deleted\n", (*head)->data); *head = NULL; return; } // else traverse to the last node while (temp->next != NULL) { // store previous link node as we need to change its next val previous = temp; temp = temp->next; } // Curr assign 2nd last node's next to Null previous->next = NULL; // delete the last node printf ("%d deleted\n", temp->data); free (temp); // 2nd last now becomes the last node } void display (struct Node *node) { // as linked list will end when Node is Null while (node != NULL) { printf ("%d ", node->data); node = node->next; } printf ("\n\n"); } int main () { //creating 4 pointers of type struct Node //So these can point to address of struct type variable struct Node *head = NULL; struct Node *node2 = NULL; struct Node *node3 = NULL; struct Node *node4 = NULL; struct Node *node5 = NULL; struct Node *node6 = NULL; // allocate 3 nodes in the heap head = (struct Node *) malloc (sizeof (struct Node)); node2 = (struct Node *) malloc (sizeof (struct Node)); node3 = (struct Node *) malloc (sizeof (struct Node)); node4 = (struct Node *) malloc (sizeof (struct Node)); node5 = (struct Node *) malloc (sizeof (struct Node)); node6 = (struct Node *) malloc (sizeof (struct Node)); head->data = 2; // data set for head node head->next = node2; // next pointer assigned to address of node2 node2->data = 4; node2->next = node3; node3->data = 6; node3->next = node4; node4->data = 8; node4->next = node5; node5->data = 10; node5->next = node6; node6->data = 12; node6->next = NULL; printf ("Linked list: "); display (head); deleteEnd (&head); deleteEnd (&head); printf ("\nLinked list: "); display (head); return 0; }
Output
Linked list: 2 4 6 8 10 12
12 deleted
10 deleted
Linked list: 2 4 6 8
Operation performed for Deletion in Singly Linked List as following:-
- Deletion at the beginning of the Singly Linked List
- Deletion at the end node of the Singly Linked List
- Deletion at the nth node of the Singly Linked
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Singly Linked List
- Introduction to Linked List in Data Structure
- Linked List in – C | C++ | Java
- Singly Linked List in – C | C++ | Java
- Insertion in singly Linked List – C | C++ | Java
- Deletion in singly Linked List – C | C++ | Java
- Reverse a linked list without changing links between nodes (Data reverse only) – C | C++ | Java
- Linked List Insertion and Deletion – C | C++ | Java
- Reverse a linked list by changing links between nodes – C | C++ | Java
- Linked List insertion in the middle – C | C++ | Java
- Print reverse of a linked list without actually reversing – C |C++ | Java
- Search an element in a linked list – C | C++ | Java
- Insertion in a Sorted Linked List – C | C++ | Java
- Delete alternate nodes of a Linked List – C | C++ | Java
- Find middle of the linked list – C | C++ | Java
- Reverse a linked list in groups of given size – C | C++ | Java
- Find kth node from end of the linked list – C | C++ | Java
- Append the last n nodes of a linked list to the beginning of the list – C | C++ | Java
- Check whether linked list is palindrome or not – C | C++ | Java
- Fold a Linked List – C | C++ | Java
- Insert at a given position – C | C++ | Java
- Delete at a given position – C | C++ | Java
Singly Linked List
- Introduction to Linked List in Data Structure
Click Here - Linked List in –
- Singly Linked List in –
- Insertion in singly Linked List –
- Insertion at beginning in singly Linked List –
- Insertion at nth position in singly Linked List –
- Insertion at end in singly Linked List –
- Deletion in singly Linked List –
- Deletion from beginning in singly linked list :
- Deletion from nth position in singly linked list :
- Deletion from end in singly linked list :
- Linked List Insertion and Deletion –
C | C++ | Java - Reverse a linked list without changing links between nodes (Data reverse only) –
C | C++ | Java - Reverse a linked list by changing links between nodes –
- Print reverse of a linked list without actually reversing –
- Print reverse of a linked list without actually reversing –
- Insertion in the middle Singly Linked List –
- Insertion in a Sorted Linked List –
- Delete alternate nodes of a Linked List –
- Find middle of the linked list –
- Reverse a linked list in groups of given size –
- Find kth node from end of the linked list –
- Append the last n nodes of a linked list to the beginning of the list –
- Check whether linked list is palindrome or not –
- Fold a Linked List –
- Insert at given Position –
- Deletion at given Position –
Login/Signup to comment