题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
代码实现:
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
struct ListNode* L=(struct ListNode*)malloc(sizeof(struct ListNode));//新建新表L头
struct ListNode* p1=list1;//p1指向list1
struct ListNode* p2=list2;//p2指向list2
struct ListNode* s=L;
if(!list1)//若list1表空则返回list2
return list2;
if(!list2)//同理
return list1;
while(p1 && p2)//遍历list1和list2
{
if(p1->val<=p2->val)
{
s->next=p1;
s=p1;
p1=p1->next;
}
else
{
s->next=p2;
s=p2;
p2=p2->next;
}
}
//当指到一个表的末尾时
if(p1==NULL)
{
s->next=p2;
s=p2;
}
if(p2==NULL)
{
s->next=p1;
s=p1;
}
return L->next;
}
测试结果: