剑指offer(C++)--合并两个排序的链表

it2022-05-05  171

题目

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足 单调不减规则。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(nullptr == pHead1) return pHead2; if(nullptr == pHead2) return pHead1; //先找到链表中值最小的节点作为头结点,再一个一个将链表链接起来 ListNode *ret; if(pHead1->val <= pHead2->val ) { ret = pHead1; pHead1 = pHead1->next; }else{ ret = pHead2; pHead2 = pHead2->next; } ListNode * head = ret; while(pHead1 != nullptr && pHead2 != nullptr) { if(pHead1->val <= pHead2->val) { ret->next = pHead1; ret = ret->next; pHead1 = pHead1->next; } else{ ret->next = pHead2; ret = ret->next; pHead2 = pHead2->next; } } if(pHead1 != nullptr) { ret->next = pHead1; } if(pHead2 != nullptr) { ret->next = pHead2; } return head; } };

最新回复(0)