text: 
  #include<stdio.h>
  #include<stdlib.h>
  
  struct node{
     	int data;
     	struct node *next;
  };
  
  struct node *head1 = NULL;
  struct node *head2 = NULL;
  
  ///// MAIN ALGORITHMIC FUNCTION to MERGE the two input linked lists ///////
  
  void merge()
  {
      	struct node *temp1 = head1;
      	struct node *temp2 = head2;
  
      	struct node *holder1 = NULL;
      	struct node *holder2 = NULL;
      	//Temporary pointer variables to store the address of next node of the two input linked list
  
      	while(temp1!=NULL && temp2!=NULL)	
      	{
          		holder1 = temp1 -> next;
          		//Storing the address of next node of first linked list
          		temp1->next=temp2;
          		//Making the first node of first linked list point to first node of second linked list
  
          		if(holder1!=NULL)			{
                      //Making the first node of second linked list point to second node of first linked list
                      holder2 = temp2 -> next;
                      temp2 -> next = holder1;
  		        }							
          		temp1=holder1;
          		temp2=holder2;	
          		//Updating the address location of two pointer variables temp1 and temp2
      	}
  }
  
  void printlist(struct node *temp){
      printf("%d",temp->data);
      temp=temp->next;		
      while(temp!=NULL){
              printf("->%d",temp->data);
              temp=temp->next;		
      }
      printf("\n");
  }
  
  int main()
  {
      // Linked List 1: 1->3->5->7   :   Linked List 2: 2->4->6
      //  making lists
      	struct node *one = (struct node*)malloc(sizeof(struct node));
      	struct node *two = (struct node*)malloc(sizeof(struct node));
      	struct node *three = (struct node*)malloc(sizeof(struct node));
      	struct node *four = (struct node*)malloc(sizeof(struct node));
      	struct node *five = (struct node*)malloc(sizeof(struct node));
      	struct node *six = (struct node*)malloc(sizeof(struct node));
      	struct node *seven = (struct node*)malloc(sizeof(struct node));
      	//Seven nodes are created
  
      	head1=one;
      	head2=two;
      	//head1 points to first node of first linked list
      	//head2 points to first node of second linked list
  
      	one->data=1;
      	one->next=three;
  
      	two->data=2;	
      	two->next=four;
  
      	three->data=3;
      	three->next=five;
  
      	four->data=4;
      	four->next=six;
  
      	five->data=5;
      	five->next=seven;
  
      	six->data=6;
      	six->next=NULL;
      	//Last node of second input linked list
  
      	seven->data=7;
      	seven->next=NULL;
      	//Last node of first input linked list
  
          printf("Linked List 1: ");
          printlist(head1);
          printf("\nLinked List 2: ");
          printlist(head2);
  
          //Merging the two linked list into single linked list
      	merge();
  
      	printf("\nMerged Linked List: ");
          printlist(head1);   //list one has been modified
  
      	return 0;
  }
  