/**
* 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:
//参数需要对是否会是nullptr进行判空
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
int curVal=-1;
ListNode *cur=new ListNode();
ListNode *res=new ListNode();
//curVal=list1.val>list2.val?list2.val:list1.val;
if(list1==nullptr && list2!=nullptr){
curVal=list2->val;
list2=list2->next;
}else if(list2==nullptr && list1!=nullptr){
curVal=list1->val;
list1=list1->next;
}else if(list1!=nullptr && list2!=nullptr)
{
if(list1->val>list2->val){
curVal=list2->val;
list2=list2->next;
}else{
curVal=list1->val;
list1=list1->next;
}
}else{
return nullptr;
}
cur=new ListNode(curVal,nullptr);
res=cur;
while(list1!=nullptr && list2!=nullptr)
{
if(list1->val>list2->val){
curVal=list2->val;
list2=list2->next;
}else{
curVal=list1->val;
list1=list1->next;
}
ListNode *temp=new ListNode(curVal,nullptr);
cur->next=temp;
cur=temp;
}
while(list1!=nullptr){
ListNode *temp=new ListNode(list1->val);
cur->next=temp;
cur=temp;
list1=list1->next;
}
while(list2!=nullptr){
ListNode *temp=new ListNode(list2->val);
cur->next=temp;
cur=temp;
list2=list2->next;
}
return res;
}
};
LeetCode21 合并有序链表
最新推荐文章于 2024-11-08 23:41:22 发布
该代码实现了一个函数,用于合并两个已排序的单链表,使合并后的链表仍按升序排列。首先检查输入的链表是否为空,然后比较链表中的节点值,将较小的值添加到新链表中,直到其中一个链表遍历完。接着将未遍历完的链表剩余部分追加到新链表尾部。
摘要由CSDN通过智能技术生成