题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
分析:
代码稳定性:
考虑4种情况:
(1)第一个链表是空链表,返回第二个链表。
(2)第二个链表是空链表,返回第一个链表。
(3)两个链表都是空链表,返回空链表。
(4)两个链表有多个结点,存在值相等的结点。
(5)两个链表都只有一个结点。
/* 合并两个排序的链表
*输入:两个排序链表的头结点指针
*输出:合并的链表或者空指针(当两链表都为空的时候)
*/
node* mergeList(node* head1,node* head2)
{
if(head1==NULL)return head2;
if(head2==NULL)return head1;
node* mList=NULL;//合并的链表
if(head1->value<=head2->value){
mList=head1;
mList->next=mergeList(head1->next,head2);
}
if(head1->value>head2->value){
mList=head2;
mList->next=mergeList(head1,head2->next);
}
return mList;
}