首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

合并两个链表算法分割故障C++

合并两个链表算法是指将两个有序链表合并为一个新的有序链表的算法。这个算法可以用于合并两个有序链表,使得合并后的链表仍然保持有序。

C++代码示例:

代码语言:txt
复制
#include <iostream>

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
    if (l1 == nullptr) {
        return l2;
    }
    if (l2 == nullptr) {
        return l1;
    }
    
    ListNode* dummy = new ListNode(0);
    ListNode* curr = dummy;
    
    while (l1 != nullptr && l2 != nullptr) {
        if (l1->val <= l2->val) {
            curr->next = l1;
            l1 = l1->next;
        } else {
            curr->next = l2;
            l2 = l2->next;
        }
        curr = curr->next;
    }
    
    if (l1 != nullptr) {
        curr->next = l1;
    }
    if (l2 != nullptr) {
        curr->next = l2;
    }
    
    ListNode* result = dummy->next;
    delete dummy;
    
    return result;
}

int main() {
    // 创建链表1: 1 -> 2 -> 4
    ListNode* l1 = new ListNode(1);
    l1->next = new ListNode(2);
    l1->next->next = new ListNode(4);
    
    // 创建链表2: 1 -> 3 -> 4
    ListNode* l2 = new ListNode(1);
    l2->next = new ListNode(3);
    l2->next->next = new ListNode(4);
    
    // 合并两个链表
    ListNode* mergedList = mergeTwoLists(l1, l2);
    
    // 输出合并后的链表: 1 -> 1 -> 2 -> 3 -> 4 -> 4
    ListNode* curr = mergedList;
    while (curr != nullptr) {
        std::cout << curr->val << " ";
        curr = curr->next;
    }
    
    // 释放内存
    delete l1;
    delete l2;
    delete mergedList;
    
    return 0;
}

该算法的时间复杂度为O(n+m),其中n和m分别是两个链表的长度。算法通过比较两个链表的节点值,依次选择较小的节点连接到新的链表中,直到其中一个链表遍历完毕。最后,将剩余的节点直接连接到新链表的末尾。

这个算法在实际开发中常用于合并有序链表,例如合并两个有序的用户列表、合并两个有序的日志文件等场景。

腾讯云相关产品推荐:

  • 云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍
  • 云数据库MySQL版(CDB):提供高可用、可扩展的关系型数据库服务。产品介绍
  • 云原生容器服务(TKE):基于Kubernetes的容器管理服务,简化容器化应用的部署和管理。产品介绍
  • 人工智能机器学习平台(AI Lab):提供丰富的人工智能开发工具和算法模型,帮助开发者快速构建和部署AI应用。产品介绍
  • 物联网开发平台(IoT Explorer):提供全面的物联网设备接入、数据管理和应用开发能力。产品介绍
  • 移动推送服务(信鸽):为移动应用提供消息推送服务,帮助开发者实现消息通知功能。产品介绍
  • 云存储(COS):提供安全、稳定、低成本的云端存储服务,适用于各类数据存储需求。产品介绍
  • 区块链服务(BCS):提供一站式区块链解决方案,帮助企业快速搭建和管理区块链网络。产品介绍
  • 腾讯云元宇宙:腾讯云的元宇宙计划,正在积极探索和研发相关技术和产品,敬请期待。

以上是腾讯云在云计算领域的一些相关产品,可以根据具体需求选择适合的产品进行开发和部署。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券