<p>#include <iostream></p>
<p> </p>
<p>class Node;</p>
<p> </p>
<p>Node * CreateLinkList(int array[], int length);</p>
<p>Node* Merge (Node* head1, Node* head2);</p>
<p> </p>
<p>void printNodes(Node * head);</p>
<p> </p>
<p>class Node {</p>
<p> public:</p>
<p> int data;</p>
<p> Node* Next;</p>
<p>};</p>
<p> </p>
<p>int main(int argc, const char * argv[]) {</p>
<p> // insert code here...</p>
<p> </p>
<p> int array1[4] = {3,6,8,9};</p>
<p> int array2[5] = {2,5,7,9,10};</p>
<p> </p>
<p> Node * head1 = CreateLinkList(array1, 4);</p>
<p> </p>
<p> Node * head2 = CreateLinkList(array2, 1);</p>
<p> </p>
<p> Node * head3 = Merge(head1, head2);</p>
<p> </p>
<p> printNodes(head3);</p>
<p> </p>
<p> getchar();</p>
<p> return 0;</p>
<p>}</p>
<p> </p>
<p>Node * CreateLinkList(int array[], int length)</p>
<p>{</p>
<p> Node * head = NULL;</p>
<p> Node * current = NULL;</p>
<p> </p>
<p> for (int i = 0; i<length; i++) {</p>
<p> Node * node = (Node *)malloc(sizeof(Node));</p>
<p> node->data = array[i];</p>
<p> node->Next = NULL;</p>
<p> if (head == NULL) {</p>
<p> head = node;</p>
<p> current = node;</p>
<p> }</p>
<p> else {</p>
<p> current->Next = node;</p>
<p> current = node;</p>
<p> }</p>
<p> </p>
<p> }</p>
<p> return head;</p>
<p>}</p>
<p>void printNodes(Node * head)</p>
<p>{</p>
<p> while (head != NULL) {</p>
<p> std::cout<<head->data <<"-->";</p>
<p> head = head->Next;</p>
<p> }</p>
<p> std::cout<<"\n";</p>
<p>}</p>
<p> </p>
<p>Node* Merge (Node* head1, Node* head2)</p>
<p>{</p>
<p> </p>
<p> Node * newHead = NULL;</p>
<p> Node * current = NULL;</p>
<p> </p>
<p> while (head1 != NULL || head2 != NULL) {</p>
<p> </p>
<p> if(head1 != NULL && head2 != NULL) {</p>
<p> if(head1->data >= head2->data) {</p>
<p> if(current == NULL){</p>
<p> newHead = head2;</p>
<p> head2 = head2->Next;</p>
<p> current = newHead;</p>
<p> current->Next = NULL;</p>
<p> }</p>
<p> else {</p>
<p> </p>
<p> current->Next = head2;</p>
<p> current = head2;</p>
<p> head2 = head2->Next;</p>
<p> current->Next = NULL;</p>
<p> }</p>
<p> }</p>
<p> else {</p>
<p> if(current == NULL){</p>
<p> newHead = head1;</p>
<p> head1 = head1->Next;</p>
<p> current = newHead;</p>
<p> current->Next = NULL;</p>
<p> }</p>
<p> else {</p>
<p> </p>
<p> current->Next = head1;</p>
<p> current = head1;</p>
<p> head1 = head1->Next;</p>
<p> current->Next = NULL;</p>
<p> }</p>
<p> }</p>
<p> }</p>
<p> else {</p>
<p> if(head1 == NULL)</p>
<p> if(newHead == NULL){</p>
<p> newHead = head2;</p>
<p> current = head2;</p>
<p> head2 = head2->Next;</p>
<p> current->Next = NULL;</p>
<p> </p>
<p> }</p>
<p> else {</p>
<p> current->Next = head2;</p>
<p> current = head2;</p>
<p> head2 = head2->Next;</p>
<p> }</p>
<p> else</p>
<p> if(head2 == NULL) {</p>
<p> if(newHead == NULL) {</p>
<p> newHead = head1;</p>
<p> current = head1;</p>
<p> head1 = head1->Next;</p>
<p> current->Next = NULL;</p>
<p> }</p>
<p> else {</p>
<p> current->Next = head1;</p>
<p> current = head1;</p>
<p> head1 = head1->Next;</p>
<p> }</p>
<p> }</p>
<p> </p>
<p> }</p>
<p> </p>
<p> }</p>
<p> return newHead;</p>
<p>}</p>