httpsdocsgooglecomfiled0BzaeW8pu0MUTnNOaGIxcEM2Uzgeditpli1So
https://docs.google.com/file/d/0B_zaeW8pu0MUTnNOaGIxcEM2Uzg/edit?pli=1
Solution
{
LIST* current;
/* Special case for the head end */
if (*l == NULL || (*l->val >= new_node->val)
{
new_node->next = *l;
*l= new_node;
}
else
{
/* Locate the node before the point of insertion */
current = *l;
while (current->next!=NULL &&
current->next->val < new_node->val)
{
current = current->next;
}
new_node->next = current->next;
current->next = new_node;
}
}
LIST* lst_merge_sorted(LIST* a, LIST* b)
{
LIST* result = NULL;
/* Base cases */
if (a == NULL)
return(b);
else if (b==NULL)
return(a);
/* Pick either a or b, and recur */
if (a->val<= b->val)
{
result = a;
result->next = lst_merge_sorted(a->next, b);
}
else
{
result = b;
result->next = lst_merge_sorted(a, b->next);
}
return(result);
}