假设有两个单链表,头结点分别为 list1, list2, 如果 list1为空,直接返回 list2,如果list2为空,直接返回 list1,如果两个链表均存在,那么这两个链表进行逐个元素的比较,如果list1中的元素大于 list2的,将list2的值保存到合并链表中,否则,将list1中的值保存到合并链表中去,如果任何一个链表遍历结束,将另外一个链表的余下部分保存到合并链表中去
LinkedList *MergeLinkedList(LinkedList *MergeList, LinkedList *list1, LinkedList *list2)
{
if (list1 == NULL && list2 != NULL) return list2;
if (list1 != NULL && list2 == NULL) return list1;
if (list1 == NULL && list2 == NULL)
{
printf("待合并链表均为空,无需合并!\n");
return NULL;
}
if (MergeList == NULL)
{
printf("保留合并结果的链表创建失败!\n");
return NULL;
}
LinkedList *p1, *p2;
p1 = list1;//用来循环遍历链表 list1
p2 = list2;//用来循环遍历链表 list2
/* 交替遍历两个链表 */
int MergeValue = 0;//每次保存两个链表中较小值,然后保存到合并链表 MergeList中去
LinkedList *TempMergeNode = MergeList; //开始赋值为合并存储链表的头结点
while (p1->next != NULL && p2->next != NULL)
{
if (p1->ne