15合并两个排序的链表
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路就是归并算法的思路,注意首先判断两个链表节点都不为空,判断大小while循环之后,要看哪个链表节点不为空,使用哨兵节点的方法处理头节点。
/* 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 == nullptr) && (pHead2 == nullptr)){ return nullptr; } if(pHead1 == nullptr){ return pHead2; } if(pHead2 == nullptr){ return pHead1; } ListNode* dummyhead = new ListNode(-1); ListNode* head = dummyhead; while(pHead1 != nullptr && pHead2 != nullptr){ if(pHead1 -> val < pHead2 -> val){ head -> next = pHead1; pHead1 = pHead1 -> next; } else{ head -> next = pHead2; pHead2 = pHead2 -> next; } head = head -> next; } if(pHead1 != nullptr){ head -> next = pHead1; } if(pHead2 != nullptr){ head -> next = pHead2; } return dummyhead -> next; } };