标签:tco pos jsb white 出错 for lists blog tno
已经已连续做了好几道题了,感觉停不下来了。突然来了兴趣了,这个题让我认为思路非常清晰,合并两个排序的链表。
我的思路例如以下:分别从两个链表里面摘取节点放到新的链表中。最后摘到一个也不留即可了。只是须要注意的是一些小细节。基本的注意事项例如以下:
1.两空(两个空的链表)
2.一空(一个链表为空一个部位空)
3.一个摘完了,另外的可能还有节点(这个须要好好注意一下,非常easy出错的)
好了,见代码吧:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
//相似于从两个链表上取下节点,放到newHead中去
if(l1 == NULL && l2 == NULL)
{
return NULL;
}
if(l1 == NULL)
{
return l2;
}
if(l2 == NULL)
{
return l1;
}
ListNode * newHead=NULL;
if(l1->val <= l2->val)
{
newHead=l1;
l1=l1->next;
}
else
{
newHead=l2;
l2=l2->next;
}
newHead->next = NULL;
ListNode *cur = newHead;
while(l1 && l2)
{
if(l1->val <= l2->val)
{
cur->next = l1;
l1=l1->next;
}
else
{
cur->next = l2;
l2 = l2->next;
}
cur=cur->next;
cur->next=NULL;
}
if(l1)
{//说明 l2 完了。仅仅剩 l1 了
cur->next = l1;
}
if(l2)
{//说明 l1 完了,仅仅剩 l2 了
cur->next=l2;
}
return newHead;
}
};结果例如以下:
标签:tco pos jsb white 出错 for lists blog tno
原文地址:http://www.cnblogs.com/blfbuaa/p/7295129.html