1、要求:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
2、核心处理代码(递归方式)
思路:
(1)判断否有其中一个或两个是空链表,如果是只有1个为空,则返回非空的链表;如果两个都为空,则返回第一个判断的链表;
(2)找到两个链表中最小的元素,作为新链表的头结点;然后把新头结点的下一个作为被选出头结点的那个链表的头,继续比较;
struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) { } }; // 处理函数 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==NULL) return pHead2; else if(pHead2==NULL) return pHead1; ListNode* newhead=NULL; if(pHead1->val<pHead2->val) { newhead = pHead1; newhead->next = Merge(pHead1->next,pHead2); } else { newhead = pHead2; newhead->next = Merge(pHead1,pHead2->next); } return newhead; }