题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍递增排序。
思路如下:
- 如果list1为空,直接返回list2;
- 若list2为空,返回list1;
- 二者均不为空,比较两个链表的头结点,若list1小于list2,则list1的头结点为合并后的链表的头结点(反之),以此类推·,直到两个链表遍历完毕。
测试用例:
- 输入链表有多个结点,结点值互不相同或存在多个相同值。
- 两个链表的一个或两个头结点为NULL指针,两链表只有一个结点
代码实现为:
方法一:递归
#include <windows.h>
#include <assert.h>
#include "SList.h"
SListNode* MergeList(SListNode* list1, SListNode* list2)
{
//list1为空
if (list1 == NULL)
{
return list2;
}
//list2为空
else if (list2 == NULL)
{
return list1;
}
//都不为空
SListNode* MergeNode