合并两列已排序链表.
注意点:
1.访问前判断是否为空。
代码:
#include<iostream>
using namespace std;
structListNode {
intval;
ListNode*next;
ListNode(intx) :val(x),next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2) {
ListNode*head,*index;
if(l1==NULL)
returnl2;
if(l2==NULL)
returnl1;
if(l1->val>l2->val)
{
head=l2;
l2=l2->next;
}
else
{
head=l1;
l1=l1->next;
}
index=head;
while(l1!=NULL&& l2!=NULL)
{
if(l1->valval)
{
index->next=l1;
index=index->next;
l1=l1->next;
}
else
{
index->next=l2;
index=index->next;
l2=l2->next;
}
}
if(l1==NULL)
index->next=l2;
elseif(l2==NULL)
index->next=l1;
returnhead;
}
intmain(intargc,constchar* argv[]) {
// insert code here...
ListNode* p1,*p2,*p3,*q1,*q2,*q3;
p1=newListNode(1);
p2=newListNode(2);
p3=newListNode(4);
q1=newListNode(1);
q2=newListNode(3);
q3=newListNode(4);
p1->next=p2;p2->next=p3;p3->next=NULL;
q1->next=q2;q2->next=q3;q3->next=NULL;
ListNode* result =mergeTwoLists(p1,q1);
while(result!=NULL)
{
cout<val<<"->";
result=result->next;
}
return 0;
}