21.Merge Two Sorted Lists

合并两列已排序链表.

注意点:

1.访问前判断是否为空。

代码:

#include

using namespace std;

structListNode {

         intval;

         ListNode*next;

         ListNode(intx) :val(x),next(NULL) {}

     };

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

    ListNode*head,*index;

    if(l1==NULL)

        returnl2;

    if(l2==NULL)

        returnl1;

    if(l1->val>l2->val)

    {

        head=l2;

        l2=l2->next;

    }

    else

    {

        head=l1;

        l1=l1->next;

    }

    index=head;

    while(l1!=NULL&& l2!=NULL)

    {

        if(l1->valval)

        {

            index->next=l1;

            index=index->next;

            l1=l1->next;

        }

        else

        {

            index->next=l2;

            index=index->next;

            l2=l2->next;

        }

    }

    if(l1==NULL)

        index->next=l2;

    elseif(l2==NULL)

        index->next=l1;


    returnhead;


}

intmain(intargc,constchar* argv[]) {

    // insert code here...

    ListNode* p1,*p2,*p3,*q1,*q2,*q3;

    p1=newListNode(1);

    p2=newListNode(2);

    p3=newListNode(4);

    q1=newListNode(1);

    q2=newListNode(3);

    q3=newListNode(4);

    p1->next=p2;p2->next=p3;p3->next=NULL;

    q1->next=q2;q2->next=q3;q3->next=NULL;

    ListNode* result =mergeTwoLists(p1,q1);

    while(result!=NULL)

    {

        cout";

        result=result->next;

    }

    return 0;

}

你可能感兴趣的:(21.Merge Two Sorted Lists)