合并两个有序链表,合并后依然有序

//合并两个有序链表,合并后依旧有序
//当第一个链表是空链表就把它和第二个链表合并,结果是第二个链表;同样,第二个链表是空表,合


并结果是第一个链表;如果两都是空链表,合并结果也是空链表
//比较两个链表的头结点,小的作为合并后的头结点,在剩余节点中,再次比较两个链表的头结点
Node* MergeList(Node* pHead1, Node* pHead2)
{
if (pHead1 == NULL)//链表1为空
{
return pHead2;
}
else if (pHead2 == NULL)//链表2为空
{
return pHead1;
}
Node* pMergeListHead = NULL;//新链表头指针为空
if (pHead1->data < pHead2->data)//链表1的头结点数据小于链表2的头结点数据
{
pMergeListHead = pHead1;//新链表的头结点为链表1的头结点
pMergeListHead->next = MergeList(pHead1->next, pHead2);//新链表的第二个以及


后面的采用递归
}
else
{
pMergeListHead = pHead2;//同上
pMergeListHead->next = MergeList(pHead1, pHead2->next);
}
return pMergeListHead;//返回新链表的头结点
}
void TestTopic1()
{
Node* list = NULL;
Node* list1 = NULL;
Node* list2 = NULL;
PushBack(&list1, 1);
PushBack(&list1, 3);
PushBack(&list1, 5);
PushBack(&list1, 7); 
PushBack(&list1, 9);
PrintList(list1);


PushBack(&list2, 0);
PushBack(&list2, 2);
PushBack(&list2, 4);
PushBack(&list2, 6);
PushBack(&list2, 8);
PrintList(list2);
list = MergeList(list1, list2);
PrintList(list);
}
结果:
13579
02468
0123456789

你可能感兴趣的:(合并两个有序链表,合并后依然有序)