合并两个排序链表-LintCode

来源:互联网 发布:php开源网站统计系统 编辑:程序博客网 时间:2024/05/24 05:02

将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。

#ifndef C165_H#define C165_H#include<iostream>using namespace std;class ListNode{public:    int val;    ListNode *next;    ListNode(int val)    {        this->val = val;        this->next = 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        if (l1 == NULL)            return l2;        if (l2 == NULL)            return l1;        ListNode *p1 = l1, *p2 = l2;        ListNode *lst = new ListNode(-1);        ListNode *q = lst;        while (p1 != NULL||p2 != NULL)        {            if (p1 != NULL&&p2 != NULL)            {                if (p1->val < p2->val)                {                    q->next = p1;                    p1 = p1->next;                    q = q->next;                }                else                {                    q->next = p2;                    p2 = p2->next;                    q = q->next;                }            }            else if (p1 == NULL&&p2 != NULL)            {                q->next = p2;                p2 = p2->next;                q = q->next;            }            else if (p1 != NULL&&p2 == NULL)            {                q->next = p1;                p1 = p1->next;                q = q->next;            }        }        return lst->next;    }};#endif