//题目描述
//
//输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
#include<windows.h>
#include<iostream>
using namespace std;
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* head=(ListNode*)malloc(sizeof(ListNode));
ListNode* p=head;
while(pHead1!=NULL&&pHead2!=NULL){
if(pHead1->val>pHead2->val){
p->next=pHead2;
p=p->next;
pHead2=pHead2->next;
}else{
p->next=pHead1;
p=p->next;
pHead1=pHead1->next;
}
}
if(pHead1!=NULL)p->next=pHead1;
if(pHead2!=NULL)p->next=pHead2;
return head->next;
}
};
//int main(){
// ListNode* pHead1=&ListNode(1);
// ListNode*p=pHead1;
// p->next=&ListNode(2);
// p=p->next;
// p->next=&ListNode(3);
// p=p->next;
// p->next=&ListNode(4);
// p=p->next;
// p->next=&ListNode(5);
// p=p->next;
//
// ListNode* pHead2=&ListNode(1);
// p=pHead2;
// p->next=&ListNode(2);
// p=p->next;
// p->next=&ListNode(3);
// p=p->next;
// p->next=&ListNode(4);
// p=p->next;
// p->next=&ListNode(5);
// p=p->next;
// Solution test=Solution();
// pHead1=test.Merge(pHead1,NULL);
// while(pHead1!=NULL){
// cout<<pHead1->val<<" ";
// pHead1=pHead1->next;
// }
// system("pause");
// return 1;
//}
【剑指offer】3.4代码的鲁棒性——面试题17:合并两个排序的链表
最新推荐文章于 2021-03-10 11:33:49 发布