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.
原题链接:https://leetcode.com/problems/merge-two-sorted-lists/
思路
就遍历一遍,比较大小依次插入新链表。注意一下某一个链表为空的状态,或者先遍历完。
代码(C)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2)
{
struct ListNode *newhead = (struct ListNode *)malloc(sizeof(struct ListNode));
if (NULL == newhead)
return NULL;
struct ListNode *rethead = newhead;
if(l1 == NULL)
return l2;
if(l2 == NULL)
return l1;
while(l1 != NULL || l2 != NULL)
{
if(l1 == NULL)
{
newhead->next = l2;
l2 = l2->next;
}
else if(l2 == NULL)
{
newhead->next = l1;
l1 = l1->next;
}
else if(l1->val < l2->val)
{
newhead->next = l1;
l1 = l1->next;
}
else
{
newhead->next = l2;
l2 = l2->next;
}
newhead = newhead->next;
}
return rethead->next;
}