您的位置:首页 > 其它

合并两个排序链表

2017-03-31 14:39 148 查看
问题描述:将两个排序链表合并为一个新的排序链表。

         样例:

             给出 
1->3->8->11->15->null
2->null

返回 
1->2->3->8->11->15->null


解题思路:令两个链表的开始元素比较,将小的元素放到新链表中,然后拥有小元素的指针向后移动,知道把所有的元素全放到新链表表中。

实验代码:

class Solution {

public:

    /**

     * @param ListNode l1 is the head of the linked list

     * @param ListNode l2 is the head of the linked list

     * @return: ListNode head of linked list

     */

    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {

        // write your code here

        ListNode *q,*p,*x,*z;

         x=new ListNode;

         z=x;

        q=l1;

        p=l2;

        if(l1==NULL)

        return l2;

        if(l2==NULL)

        return l1;

        while(q!=NULL&&p!=NULL)

        {

              if(q->val<=p->val)

             { 

                  ListNode *y;

                  y=new ListNode(q->val);

                  x->next=y;

                  x=y;

                  q=q->next;

             }

              else

             { 

                    ListNode *y;

                    y=new ListNode(p->val);

                  x->next=y;

                  x=y;

                  p=p->next;

             }

             if(q==NULL)

             { 

                 x->next=p;

             }

              if(p==NULL)

             { 

                 x->next=q;

             }

            

        }

        return z->next;

    }

};

个人感想:若一个链表循环完,另一个链表没循环完需要把没循环的剩余元素加到新的链表后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: