FaltuTech.Club : Fane of Advanced Logical Thriving Utopian Technical Club

Linked List Creation, Insertion, Deletion, Search Operations In C (code)



#include 
#include 
typedef struct node      // structure node
{
    int info;             // a information that is to be stored
    struct node *next;    // create a next name pointer which will point to node type
}node_t;                  // node_t object is created

node_t *first,*rear,*printing;
// first is for storing first information pointer
// rear is to store where we have last stored the information
// printing is to track while printing.

void createlist();          // it create a empty list
void insert_element_at_beg(int);
// above funtion will create a new node and insert that into list
// below function will create a new node and insert that into list
void insert_element_at_end(int);
// below function will create a new node and insert it after
// at specific node if found else print node not found
void insert_element_at_mid();
// below function will search the list
void search_element();
// below function will delete an element
void delete_element();
void print_list();          // it will print the list
void main()
{
    int info,choice,after;
    clrscr();
	// create list at first
    createlist();
	// loop till user wants to exit
    do
    {    // ask user for choices
	printf("Enter your choice\n\n");
	printf("Press 1 to Enter the Number at the begining\n");
	printf("Press 2 to Enter the Number at the end\n");
	printf("Press 3 to Enter the Number at mid\n");
	printf("Press 4 to search an element\n");
	printf("Press 5 to delete an element\n");
	printf("Press 6 to Print the list\n");
	printf("Press 7 to exit\n");
	scanf("%d",&choice);
		// if one call insert_element()
	if(choice==1)
	{
	    printf(" \n Enter the element");
	    scanf("%d",&info);
	    insert_element_at_beg(info);
	}
	else if(choice==2){
	 printf("\n Enter the element");
	 scanf("%d",&info);
	 insert_element_at_end(info);

	}
	else if(choice==3){
	 insert_element_at_mid();

	}
	else if(choice==4){
	search_element();
	}
	else if(choice==5){

	 delete_element();
	}
	else if(choice==6){
	 print_list();      // it will print the list
	 printf("\n");
	}
    }
    while(choice!=7); // if choice is 2 break the loop

    getch();
}

void createlist()
{
    node_t *createlist=malloc(sizeof(node_t));  // create a new node
	// intialize everyting with null
    createlist->next=NULL;
    createlist->info=NULL;
	// initialize first and rear with the first node created
    first=createlist;
    rear=createlist;
}
void search_element(){
int element,found=0;
 printing=rear;
 // check if list is empty
 if(rear->info==NULL){
 printf("\nThe list is empty\n");
 }
 else{
 printf("Enter the element you want to search\n");
 scanf("%d",&element);
 // search the element
 while(printing!=NULL){
  if(printing->info==element)
  {
  found=1; // if element found than change the flag(found)
  break;
  }
  printing=printing->next;
 }
 if(found==0)
 printf("\nElement not found\n");
 else
 printf("\nElement Found\n");
 }

}
void insert_element_at_beg(int element)
{
    node_t *new_node=malloc(sizeof(node_t)); // create a new node
	// check if list is empty
	// if yes then enter the first element
    if(first->info==NULL)
    {
	new_node->info=element;
	first->info=element;
    }
	// if not first node then
	// enter the info in newly created node and
	// point its next to our last created node.
	// and make our rear pointing to newly created node.
    else
    {
	new_node->info=element;
	new_node->next=rear;
	rear=new_node;
    }
}

void insert_element_at_end(int element){
     node_t *new_node=malloc(sizeof(node_t)); // create a new node
	// check if list is empty
	// if yes then enter the first element
    if(first->info==NULL)
    {
	first->info=element;
    }
	// if not first node then
	// enter the info in newly created node and
	// point its next to our last created node.
	// and make our rear pointing to newly created node.
    else
    {
	new_node->info=element;
	new_node->next=NULL;
	first->next=new_node;
	first=new_node;
    }



}

void insert_element_at_mid(){
node_t *new_node=malloc(sizeof(node_t)); // create a new node
int element,afterv;
      char choice1;
     if(first->info==NULL){
      printf("\nList is empty. Add some numbers first\n");
     }
     else{
     printf("\n Enter the element after which you want to add\n");
	 scanf("%d",&afterv);
	 printf("\n Enter the element which you wnat to add\n");
	 scanf("%d",&element);
     printing=rear;
	while(printing->info!=afterv){
	printing=printing->next;
	if(printing==NULL)
	break;
	}
	if(printing==NULL){
	 printf("Element Not Found");
	}
	else{
	new_node->info=element;
	new_node->next=printing->next;
	printing->next=new_node;
     }
    }
}
// prints the whole list
void print_list()
{
    printing=rear;  // intializes the printing
	// while loop -- until a node with next=null is not found
    while(printing!=NULL)
    {   if(printing->next==NULL && printing->info==NULL){
    printf("List is Empty");
    }
	printf("%d ",printing->info);
	printing=printing->next;
    }


}

void delete_element(){
node_t *previous;   // previous is created to store the previous node of match
int element;
 printing=rear;    // intialize print
 if(rear->info==NULL){  // check if list is empty
 printf("The list is empty");

 }
 else{

  printf("Enter the element you want to delete");
  scanf("%d",&element);
  while(printing->info!=element && printing!=NULL){ // search the element

   previous=printing;
   printing=printing->next;
  }    if(printing->info!=element){   // check element exist
	printf("Element not found");

       }
	   //if rear is equal to printing then the element to be 
	   //deleted is first in list
       else if(rear==printing){
	rear=printing->next;
	} 
	// if printing next is null then last element has to be deleted
	else if(printing->next==NULL){
	       first=previous;
	       first->next=NULL;
	}
	// else delete matched mid element
	else{
	 previous->next=printing->next;

	}
 }
}