合并两个有序链表
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
if(!l1)return l2;
if(!l2)return l1;
struct ListNode* p=(struct ListNode*)malloc(sizeof(struct ListNode)),*h=p;
if(l1->val<l2->val){h=p=l1;l1=l1->next;}else{h=p=l2;l2=l2->next;}
while(l2&&l1){if(l2->val>l1->val){p->next=l1;l1=l1->next;p=p->next;}else{p->next=l2;l2=l2->next;p=p->next;}}
if(l1)p->next=l1;
if(l2)p->next=l2;
return h;
}
本来想要再引入一个辅助链表,但是想了想 ,因为给的链表本身是有序的,所以就直接在l1和l2上面做文章,直接比较val的大小,然后就对相应的链表上改造。具体思路见代码。