单链表的实现:https://blog.youkuaiyun.com/weixin_41892460/article/details/82855823
//递归
pList Merge(pList list1, pList list2)
{
pList newlist = NULL;
if (NULL == list1)
{
return list2;
}
if (NULL == list2)
{
return list1;
}
if (NULL == list1 && NULL == list2)
{
return NULL;
}
if ((list1)->data == (list2)->data)
{
newlist = list1;
newlist->next = Merge_R((list1)->next, (list2)->next);
}
if ((list1)->data < (list2)->data)
{
newlist = list1;
newlist->next = Merge_R((list1)->next, list2);
}
if ((list1)->data >(list2)->data)
{
newlist = list2;
newlist->next = Merge_R(list1, (list2)->next);
}
while (list1)
{
list1 = (list1)->next;
}
while (list2)
{
list2 = (list2)->next;
}
return newlist;
}
//非递归
pList Merge_R(pList list1, pList list2)
{
pList newlist = NULL;
pNode cur = NULL;
if (list1 == NULL)
newlist = list2;
if (list2 == NULL)
newlist = list1;
if (NULL == list1 && NULL == list2)
{
return NULL;
}
if (list1->data == list2->data)
{
cur = BuyNode(list1->data);
list2 = list2->next;
list1 = list1->next;
newlist = cur;
}
else if (list1->data > list2->data)
{
cur = BuyNode(list2->data);
list2 = list2->next;
newlist = cur;
}
else if (list1->data < list2->data)
{
cur = BuyNode(list1->data);
list1 = list1->next;
newlist = cur;
}
while (list1&&list2)
{
if (list1->data >= list2->data)
{
cur->next = BuyNode(list2->data);
list2 = list2->next;
cur = cur->next;
}
else if (list1->data < list2->data)
{
cur->next = BuyNode(list1->data);
list1 = list1->next;
cur = cur->next;
}
}
while (list1)
{
cur->next = BuyNode(list1->data);
list1 = list1->next;
cur = cur->next;
}
while (list2)
{
cur->next = BuyNode(list2->data);
list2 = list2->next;
cur = cur->next;
}
return newlist;
}