链表-合并两个排序链表-简单

描述
将两个排序链表合并为一个新的排序链表
您在真实的面试中是否遇到过这个题?  是
样例

给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。

题目链接

程序

/**
 * Definition of singly-linked-list:
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *        this->val = val;
 *        this->next = NULL;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param l1: ListNode l1 is the head of the linked list
     * @param l2: 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
        if(l1 == NULL)  return l2;
        if(l2 == NULL)  return l1;
        ListNode *res, *p;
        if(l1->val < l2->val){
            res = l1;
            l1 = l1->next;
        }
        else{
            res = l2;
            l2 = l2->next;
        }
        p = res;
        while(l1 != NULL && l2 != NULL){
            if(l1->val < l2->val){
                p->next = l1;
                l1 = l1->next;
            }
            else{
                p->next = l2;
                l2 = l2->next;
            }
            p = p->next;
        }
        if(l1 != NULL) p->next = l1;
        else if(l2 != NULL) p->next = l2;
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_18124075/article/details/80980635