题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
分析:
完整代码:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { //情况1:如果链表1为空链表 if(pHead1 == nullptr) return pHead2;//则返回链表2的的头节点 //情况2:如果链表2为空链表 if(pHead2 == nullptr) return pHead1;//则返回链表1的头节点 //创建合并后的链表的头节点 ListNode* MergeHead = nullptr; //如果链表1的头节点小于链表2的头节点 if(pHead1->val<pHead2->val) { //则合并后的头节点即为链表1的头节点 MergeHead = pHead1; //接下来,就是链表1剩下的节点于链表2的节点合并 MergeHead->next = Merge(pHead1->next,pHead2); } //如果链表2的头节点小于链表1的头节点 else { //合并之后的链表的头节点就是链表2的头节点 MergeHead = pHead2; //接下来,就是链表2剩下来的节点于链表1的节点合并 MergeHead->next = Merge(pHead1,pHead2->next); } // 返回合并后链表的节点(这其中包括两个链表都为空时,合并链表的头节点也为空) return MergeHead; } };