Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
一,算法分析
类似两个数组的合并,注意OJ给的链表默认是不带头结点的;另外两个数相等的时候可以归到大于或小于中进行处理
二、C语言实现
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { struct ListNode *next1,*next2,*temp,*pre,*head; next1=l1; next2=l2;//这些链表默认都是不太头节点的,也就是head就是指向第一个有信息的值 head->next=next1; pre=head; while(next1!=NULL && next2!=NULL){ if(next1->val < next2->val){ pre=next1; next1=next1->next; }else{ temp=next2->next;//暂时保存 next2->next=next1; pre->next=next2; next2=temp; pre=pre->next; } } if(next1==NULL && next2!=NULL){ pre->next=next2; } return head->next; }