Aim: Create a singly linked list of n nodes and delete the given element using C.
#include <stdio.h> #include <malloc.h> struct node { int value; struct node *next; }; typedef struct node snode; snode *newnode, *ptr; snode *first = NULL, *last = NULL, *prev = NULL; snode* create_node(int); void insert_node(int); void display(); void delete_node(int); int main() { int ch=0,n,item; while (ch!=4) { printf("\n---Linked List Deletion---"); printf("\n1.Create List \n2.Display List \n3.Delete Node \n4.Exit\n"); printf("\nEnter your choice : "); scanf("%d", &ch); switch (ch) { case 1: printf("\nEnter the number of elements : "); scanf("%d",&n); insert_node(n); break; case 2: printf("\nElements in the list are : "); display(); break; case 3: printf("Enter the element to delete : "); scanf("%d",&item); delete_node(item); break; case 4: printf("Exiting..."); break; default: printf("\nInvalid Choice\n"); break; } } return 0; } snode* create_node(int val) { newnode = (snode *)malloc(sizeof(snode)); newnode->value = val; newnode->next = NULL; return newnode; } void insert_node(int n) { first = NULL,last=NULL; int val,i; for(i=0;i<n;i++) { printf("\nEnter the value for the Node %d : ",i+1); scanf("%d", &val); newnode = create_node(val); if (first == last && last == NULL) { first = last = newnode; first->next = NULL; last->next = NULL; } else { last->next = newnode; last = newnode; last->next = NULL; } } printf("\nLinked list created\n"); } void display() { if (first == NULL) { printf("\nNo nodes in the list to display\n"); } else { for (ptr = first;ptr != NULL;ptr = ptr->next) { printf(" %d ", ptr->value); } } } void delete_node(int item) { int i,pos=0; struct node *temp,*ptr=first; if(first==NULL) { printf("nThe List is Empty:n"); } else { while(ptr != NULL) { if(ptr->value == item) break; pos++; ptr = ptr->next; } if(pos==0) { ptr=first; first=first->next ; printf("The deleted element is:%d",ptr->value); free(ptr); } else { ptr=first; for(i=0;i<pos;i++){ temp=ptr; ptr=ptr->next ; } temp->next =ptr->next ; printf("The deleted element is:%d",ptr->value); free(ptr); } } }
Output
---Linked List Deletion--- 1.Create List 2.Display List 3.Delete Node 4.Exit Enter your choice : 1 Enter the number of elements : 5 Enter the value for the Node 1 : 7 Enter the value for the Node 2 : 3 Enter the value for the Node 3 : 6 Enter the value for the Node 4 : 2 Enter the value for the Node 5 : 1 Linked list created ---Linked List Deletion--- 1.Create List 2.Display List 3.Delete Node 4.Exit Enter your choice : 2 Elements in the list are : 7 3 6 2 1 ---Linked List Deletion--- 1.Create List 2.Display List 3.Delete Node 4.Exit Enter your choice : 3 Enter the element to delete : 6 The deleted element is:6 ---Linked List Deletion--- 1.Create List 2.Display List 3.Delete Node 4.Exit Enter your choice : 2 Elements in the list are : 7 3 2 1 ---Linked List Deletion--- 1.Create List 2.Display List 3.Delete Node 4.Exit Enter your choice : 4 Exiting...