博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

leetcode:合并2个有序链表-easy

Posted on 2023-02-13 22:58  乔55  阅读(11)  评论(0编辑  收藏  举报

一、题目:将2个升序链表合并为一个全新的升序链表,并返回

二、解法

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) 
    {
        ListNode* phead=new ListNode(); // 创建头结点
        ListNode* ptail=phead;          // 尾指针,指向头结点
        while(list1!=nullptr&&list2!=nullptr)
        {
            if(list1->val<list2->val)
            {
                ptail->next=list1;
                list1=list1->next;
                ptail=ptail->next;
            }
            else
            {
                ptail->next=list2;
                list2=list2->next;
                ptail=ptail->next;
            }
        }
        if(list1!=nullptr)
        {
            ptail->next=list1;
            //ptail=phead->next;
            //delete phead;
            //return retrun ptail;
        }
        if(list2!=nullptr)
        {
            ptail->next=list2;
            //ptail=phead->next;
           // delete phead;
            //return retrun ptail;
        }
        ptail=phead->next;
        delete phead;
        return ptail;
    }
};