链表1和链表2是两个递增排序的单链表,合并这两个链表得到升序的链表如上图。
链表1的头结点的值小于链表2的头结点的值,所以链表1的头结点是合并后链表的头结点。(如图)在剩余的链表中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前合并好的链表的尾节点链接起来。(如图)递归可以得到合并后的新链表。
下面是一段参考代码:
#include <iostream>
using namespace std;
typedef struct ListNode
{
int _data;
ListNode *_next;
ListNode(int data)
:_data(data)
,_next(NULL)
{}
}Node;
Node *MergeList(Node *head1,Node *head2)
{
if (head1 == NULL)
{
return head2;
}
else if (head2 == NULL)
{
return head1;
}
Node *MergeListHead = NULL;
if (head1->_data < head2->_data)
{
MergeListHead = head1;
MergeListHead -> _next = MergeList(head1->_next,head2);
}
else
{
MergeListHead = head2;
MergeListHead -> _next = MergeList(head1,head2->_next);
}
return MergeListHead;
}