#include #include 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; }