问题
将两个有序链表合并成一个新的有序链表,例:
list1: 1->4->8->9
list2: 2->3->5->6->10
合并后
list: 1->2->3->4->5->6->8->9->10
分析
利用两指针p1,p2分别指向两链表的头head1,head2,依次比较当前指针所指元素,若p1->val小于p2->val,则将p1所指元素添加到新的链表中,并使p1指向list1的下一个结点;否则,将p2所指元素添加到新的链表中,并使p2指向list2的下一个结点。
实现
具体实现可使用递归和非递归两种算法
递归算法
递归终止条件:若head1为空,返回head2指针;若head2为空,返回head1指针
递归过程: