剑指offer:合并两个排序的链表
2017-03-16 16:29
344 查看
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。(这题也可以用递归来做)
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == NULL) return pHead2; else if(pHead2 == NULL) return pHead1; ListNode* pHead; if(pHead1->val <= pHead2->val) { pHead = pHead1; pHead1 = pHead1->next; } else { pHead = pHead2; pHead2 = pHead2->next; } ListNode* pout = pHead; while(pHead1 != NULL && pHead2 != NULL) { while(pHead1 != NULL && (pHead1->val <= pHead2->val)) { pHead->next = pHead1; pHead1 = pHead1->next; pHead = pHead -> next; } while(pHead2 != NULL && pHead1 != NULL && (pHead1->val > pHead2->val)) { pHead->next = pHead2; pHead2 = pHead2->next; pHead = pHead -> next; } } if(pHead1 == NULL) { while(pHead2 != NULL) { pHead->next = pHead2; pHead2 = pHead2->next; pHead = pHead -> next; } } if(pHead2 == NULL) { while(pHead1 != NULL) { pHead->next = pHead1; pHead1 = pHead1->next; pHead = pHead -> next; } } pHead -> next = NULL; return pout; } };
相关文章推荐
- 剑指Offer学习总结-合并两个排序的链表
- 剑指Offer面试题25:合并两个排序的链表
- 剑指offer 16 合并两个排序的链表
- 剑指offer-面试题 17:合并两个排序的链表
- 【剑指offer】16合并两个排序的链表
- 剑指offer--合并两个排序的链表
- 【剑指offer-Java版】17合并两个排序链表
- 剑指Offer:面试题17——合并两个排序的链表
- 剑指offer——面试题17:合并两个排序的链表
- 【剑指offer 面试题17】合并两个排序的链表
- 剑指Offer:反转链表、合并两个排序的链表
- 剑指Offer面试题:16.合并两个排序的链表
- 剑指offer---合并两个排序的链表
- 剑指Offer15 合并两个已排序链表
- 剑指Offer - 九度1519 - 合并两个排序的链表
- 剑指Offer--面试题17:合并两个排序的链表--Java实现
- 剑指 Offer —16—合并两个排序的链表
- 剑指offer- 题目1519:合并两个排序的链表 (2014.1.3)
- 剑指offer----合并两个排序的链表
- 剑指offer之面试题17 :合并两个排序的链表