题解 | #合并两个排序的链表#
合并两个排序的链表
https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution {//合并两个不带头节点 public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode *p1,*p2,*ans,*tail; //分别为工作节点 p1=pHead1; p2=pHead2; ans=(ListNode *)malloc(sizeof(ListNode)); //申请头结点 tail=ans; ans->next=nullptr; while(p1&&p2){ // cout<<p1->val<<" "<<p2->val<<endl; if(p1->val<=p2->val) { tail->next=p1; tail=p1; p1=p1->next; } else { tail->next=p2; tail=p2; p2=p2->next; } } while(p1){ //把链表剩余的元素直接加入 tail->next=p1; break; } while(p2){ //把链表剩余的元素直接加入 tail->next=p2; break; } return ans->next; } };