Merge Two Sorted Lists

来源:互联网 发布:淘宝众筹 淘宝怎么不管 编辑:程序博客网 时间:2024/05/01 07:59

原题地址:点我传送

这其实就是归并算法的归并一步。思想就是两个链表从头开始,每次比较小的往里面塞,到一个链表尽头后将另一个表的后面全部放到所求表的后面即可。

比较麻烦的是所求表ans开辟空间是先开辟在放数,所以一定要确定有即将插入的值时才开辟一个新的空间,否则就会多出一个“0”。

C++:

/** * 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)     {        ListNode* ans = new ListNode(0);        ListNode* p = l1;        ListNode* q = l2;        ListNode* s = ans;        if(!p&&!q)return NULL;        while(p&&q)        {            if(p->val<q->val)            {                s->val=p->val;                p=p->next;            }            else            {                s->val=q->val;                q=q->next;            }            if(p||q)            {                s->next= new ListNode(0);                s=s->next;            }        }        if(!q)        {            while(p)            {                s->val=p->val;                p=p->next;                if(p)                {                    s->next= new ListNode(0);                    s=s->next;                }            }        }        if(!p)        {            while(q)            {                s->val=q->val;                q=q->next;                if(q)                {                    s->next= new ListNode(0);                    s=s->next;                }            }        }        return ans;    }};


0 0
原创粉丝点击