Probelm Discription:
Two linked lists are given as
A: 1, 2, 3, 4, 5, 6
B: 7, 8, 9, 10, 11, 12
how to create a third linked list so that it is in the following order.
C: 1,7,2,8,…..,6,12
First Method to solve the Problem...
View Code
1 public class LinkedList 2 { 3 4 public static void main( String[] args ) 5 { 6 int[] A = { 1, 2, 3, 4, 5, 6 }; 7 int[] B = { 7, 8, 9, 10, 11, 12 }; 8 9 int[] C = new int[ A.length + B.length ]; 10 11 for ( int index = 0; index < C.length / 2; index += 2 ) 12 { 13 C[ index ] = A[ index ]; 14 C[ index + 1 ] = B[ index ]; 15 } 16 17 for ( int index = 0; index < C.length; index++ ) 18 { 19 System.out.printf( "%d, ", C[ index ] ); 20 } 21 22 } 23 24 }
Second Method to solve the Problem...
View Code
1 #include<iostream> 2 #include<conio.h> 3 4 using namespace std; 5 6 typedef struct node 7 { 8 int data; // will store information 9 node *next; // the reference to the next node 10 }; 11 12 //Show the link list 13 void printLinkList(node *head) 14 { 15 while(head != NULL) 16 { 17 printf("%d ",head->data); 18 head = head->next; 19 } 20 } 21 22 int main() 23 { 24 node *head1 = NULL; //empty linked list 25 node *head2 = NULL; //empty linked list 26 node *head3 = NULL; //empty linked list 27 node *traverse = NULL; 28 node *traverse1 = NULL; 29 node *traverse2 = NULL; 30 node *traverse3 = NULL; 31 node *temp = NULL; 32 33 34 int counter = 0; 35 int LL1[6] = {1,2,3,4,5,6}; 36 int LL2[6] = {7,8,9,10,11,12}; 37 38 //Insert Data in 1 st link list 39 while(counter < 6) 40 { 41 if(head1 == NULL) 42 { 43 node *temp; 44 temp = (node*)malloc(sizeof(node)); 45 temp->data = LL1[counter++]; 46 temp->next = NULL; 47 head1 = traverse = temp; 48 } 49 else 50 { 51 temp = NULL; 52 temp = (node*)malloc(sizeof(node)); 53 temp->data = LL1[counter++]; 54 temp->next = NULL; 55 traverse->next = temp; 56 traverse = traverse->next; 57 } 58 } 59 60 counter = 0; 61 traverse = NULL; 62 //Insert Data in 2nd link list 63 while(counter < 6) 64 { 65 if(head2 == NULL) 66 { 67 node *temp; 68 temp = (node*)malloc(sizeof(node)); 69 temp->data = LL2[counter++]; 70 temp->next = NULL; 71 head2 = traverse = temp; 72 } 73 else 74 { 75 temp = NULL; 76 temp = (node*)malloc(sizeof(node)); 77 temp->data = LL2[counter++]; 78 temp->next = NULL; 79 traverse->next = temp; 80 traverse = traverse->next; 81 } 82 } 83 84 //Now insert in the third link list 85 counter = 0; 86 traverse = NULL; 87 traverse1 = head1; 88 traverse2 = head2; 89 while(traverse1 != NULL && traverse2 != NULL) 90 { 91 if(head3 == NULL && traverse1 != NULL) 92 { 93 temp = NULL; 94 temp = (node*)malloc(sizeof(node)); 95 temp->data = traverse1->data; 96 temp->next = NULL; 97 head3 = traverse3 = temp; 98 traverse1 = traverse1->next; 99 } 100 else if(traverse1 != NULL) 101 { 102 temp = NULL; 103 temp = (node*)malloc(sizeof(node)); 104 temp->data = traverse1->data; 105 temp->next = NULL; 106 traverse3->next = temp; 107 traverse1 = traverse1->next; 108 traverse3 = traverse3->next; 109 } 110 111 if(traverse2 != NULL) 112 { 113 temp = NULL; 114 temp = (node*)malloc(sizeof(node)); 115 temp->data = traverse2->data; 116 temp->next = NULL; 117 traverse3->next = temp; 118 traverse2 = traverse2->next; 119 traverse3 = traverse3->next; 120 } 121 } 122 printLinkList(head1); 123 printf("\n"); 124 printLinkList(head2); 125 printf("\n"); 126 printLinkList(head3); 127 printf("\n"); 128 return 0; 129 }