合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的。
两个链表中的元素依次相比较,将比较中较小的元素拼接至新的链表中。
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
struct ListNode* p1=list1;
struct ListNode* p2=list2;
struct ListNode* p3=(struct ListNode*)malloc(sizeof(struct ListNode));//定义新的链表并申请空间
struct ListNode* r=p3;
while(p1&&p2)//其中一个链表比较到最后后后直接结束循环
{
if(p1->val<p2->val)
{
r->next=p1;
r=p1;
p1=p1->next;
}
else
{
r->next=p2;
r=p2;
p2=p2->next;
}
}
if(!p1)
{
r->next=p2;
}
else
{
r->next=p1;
}
return p3->next;//头节点为空,所以返回下一个
}