合并两个有序链表
输入两个单调递增的链表,输出两个链表合成后的链表,合成后的链表需要满足单调不减规则
思路:谁小取谁,谁小谁动
步骤:
1.定义指针:p1,p2用来分别遍历两个链表;定义一个p,一个pHead,一个进行存数,一个用来最终返回
2.初始化p:取两个链表头结点中的较小值(别忘了让那个指针后移)
3.循环比较两个链表元素,谁小就取谁,谁小就往后移动,直到某一个链表到了尾巴
4.p再去加上另一个链表的剩余部分
/* 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; if(pHead2==NULL) return pHead1; ListNode* p1=pHead1; ListNode* p2=pHead2; ListNode* p=NULL; if(p1->val<p2->val) { p=p1; p1=p1->next; } else { p=p2; p2=p2->next; } ListNode* pHead=p; while(p1!=NULL&&p2!=NULL) { if(p1->val<p2->val) { p->next=p1; p=p->next; p1=p1->next; } else { p->next=p2; p=p->next; p2=p2->next; } } if(p1!=NULL) p->next=p1; if(p2!=NULL) p->next=p2; return pHead; } };