Display Of The Nodes void display() { NODE *traverse; if(start==NULL) { printf ("There are no nodes to be displayed. The list is empty .\n"); } else { traverse=start; printf ("The linked list is: "); while(traverse!=NULL) { printf ("%d ",traverse->info); traverse=traverse->next; } } }
The Insert Menu void insert() { int choice; while(1) { printf ("\n---Insert Menu---\n"); printf ("1. Insert at first position.\n"); printf ("2. Insert in between.\n"); printf ("3. Insert at the end.\n"); printf ("4. Go to main menu\n"); printf ("5. Exit\n"); printf ("Enter choice: "); scanf ("% d",&choice ); switch(choice) { case 1: insert_first (); break ; case 2: insert_between (); break ; case 3: insert_end (); break ; case 4: mainmenu (); break ; case 5: exit(0); break ; default: printf ("Enter a valid choice."); } } }
Insert Node At The First Position void insert_first () { NODE *temp; if(start==NULL) { printf ("List is empty. Create as the first node.\n"); create(); } else { int iData ; temp=(NODE *) malloc ( sizeof (NODE)); temp-> prev =NULL; temp->next=NULL; printf ("Enter an integer value: "); scanf ("%d",& iData ); temp->info= iData ; start-> prev =temp; temp->next=start; start=temp; printf ("Node inserted at first position.\n"); } display(); }
Insert Node At Any Position void insert_between () { if(start==NULL) { printf ("List is empty. Create as the first node.\n"); create(); } else { int iPosition,iCount,iLoop,iData ; printf ("Enter the position where you want to insert: "); scanf ("%d",& iPosition ); iCount =count(); if( iPosition > iCount ) { printf ("There are %d elements.\n", iCount ); } else { NODE *temp,*traverse; traverse=start; printf ("Enter an integer value: "); scanf ("%d",& iData ); temp = (NODE *) malloc ( sizeof (NODE)); temp-> prev =NULL; temp->info= iData ; temp->next=NULL; for( iLoop =0;iLoop<iPosition-2;iLoop++) { traverse=traverse->next; } temp-> prev =traverse; temp->next=traverse->next; traverse->next-> prev =temp; traverse->next=temp; printf ("Node inserted at position %d.\n", iPosition ); } } display(); }
Insert Node At The End void insert_end () { if(start==NULL) { printf ("List is empty. Create as the first node.\n"); create(); } else { create(); printf ("Node inserted at the end.\n"); } display(); }
Counting Of Nodes int count() { int iCount =0; NODE *traverse; traverse=start; while(traverse!=NULL) { traverse=traverse->next; iCount ++; } return iCount ; }
The Delete Menu void deletion() { int choice; while(1) { printf ("\n---Delete Menu---\n"); printf ("1. Delete first node.\n"); printf ("2. Delete last node.\n"); printf ("3. Delete by position.\n"); printf ("4. Go to main menu\n"); printf ("5. Exit\n"); printf ("Enter choice: "); scanf ("% d",&choice ); switch(choice) { case 1: delete_first (); break ; case 2: delete_end (); break ; case 3: delete_position (); break ; case 4: mainmenu (); break ; case 5: exit(0); break ; default: printf ("Enter a valid choice."); } } }
Delete The First Node void delete_first () { NODE * delete_node ; if(start==NULL) { printf ("There are no nodes to be deleted. The list is empty .\n"); } else { delete_node =start; start=start->next; free( delete_node ); printf ("The first node is deleted.\n"); } display(); }
Delete The Last Node void delete_end () { NODE * delete_node , *traverse; if(start==NULL) { printf ("There are no nodes to be deleted. The list is empty .\n"); } else { traverse=start; while(traverse->next->next!=NULL) { traverse=traverse->next; } delete_node =traverse->next; traverse->next=NULL; free( delete_node ); printf ("The last node is deleted.\n"); } display(); }
Delete Node At Any Position void delete_position () { if(start==NULL) { printf ("There are no nodes to be deleted. The list is empty.\n"); } else { NODE *traverse, * delete_node ; int iPosition , iLoop , iCount ; printf ("Enter the position to be deleted: "); scanf ("%d",& iPosition ); iCount =count(); if( iPosition > iCount ) { printf ("There are %d elements.\n", iCount ); } else { traverse=start; for( iLoop =0;iLoop<iPosition-2;iLoop++) { traverse=traverse->next; } delete_node =traverse->next; delete_node ->next-> prev =traverse; traverse->next= delete_node ->next; free( delete_node ); printf ("Node deleted at position %d.\n", iPosition ); } } display(); }