题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
输入样例
1->3->5 , 2->4->5
输出样例
1->2->3->4->5->5
C 代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//经过检测,这个题是不带头结点
struct ListNode* merge(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *newHead = (struct ListNode*)malloc(sizeof(struct ListNode));//头结点
struct ListNode *tempHead = newHead;
//考虑边界:有一个链表为空、两个都为空、都不为空
while(l1 && l2){
//尾插
if(l1->val <= l2->val){
tempHead->next = l1;
tempHead = l1;
l1 = l1->next;
}else{
tempHead->next = l2;
tempHead = l2;
l2 = l2->next;
}
}
if(l1)
tempHead->next = l1;
else
tempHead->next = l2;
return newHead->next;//返回第一个元素结点
}