#21. Merge Two Sorted Lists

本文介绍了一种方法来合并两个已排序的链表,并通过重新连接节点的方式创建一个新的排序链表。该方法适用于计算机科学与数据结构的学习者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode *temp=l2,*last_temp=NULL,*random;
        while(l1!=NULL){
            temp = l2;
            while(temp!=NULL&&l1->val>temp->val){
                last_temp = temp;
                temp = temp->next;
            }
            /*if(last_temp!=NULL)
                cout<<"last_temp = "<<last_temp->val<<endl;
            if(temp!=NULL)
                cout<<"temp ="<<temp->val<<endl;
                */
            random = l1;
            l1 = l1->next;
            //插入头 
            if(last_temp==NULL){    
                random->next = l2;
                l2 = random;
            }else if(temp==NULL){//插入尾部 
                last_temp->next = random;
                random->next = NULL;
            }else if(temp!=NULL){//插入中间 
                last_temp->next=random;
                random->next = temp;
            }

            random = l2;
            while(random!=NULL){
                //cout<<random->val<<"  ";
                random = random->next;
            } 
            //cout<<endl;
        }
        return l2;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值