您的位置:首页 > 其它

leetcode[21]:Merge Two Sorted Lists

2015-06-07 17:31 309 查看
Merge Two Sorted Lists

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.

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *L, *tmp;
if(l1 == NULL ) return l2;
if(l2 == NULL ) return l1;
L=l1;
while(1)
{
if(L->val > l2->val)
{
tmp = ( struct ListNode* ) malloc( sizeof( struct ListNode* ) );
tmp->val = l2->val;
tmp->next = l1;
l1 = tmp;
L=l1;
l2 = l2->next;
}
else
{
if( L->next == NULL )
{
L->next=l2;
return l1;
}
if( L->next->val < l2->val)
{

L = L->next;
}
else {
tmp = ( struct ListNode* ) malloc( sizeof( struct ListNode* ) );
tmp->val = l2->val;
tmp->next = L->next;
L->next = tmp;
l2 = l2->next;
L = L->next;
}
}
if (l2 == NULL) break;
}
return l1;
}


思路比较混乱,代码也比较乱。。。大概是以list 1 为基准,如果l2的数较小,直接移动l1的头指针,如果l1前面的较小便移动指针将l2的数值穿插进去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  list