当前位置: 首页 > news >正文

合并有序链表


// 定义链表节点结构
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(nullptr) {}
};

// 合并两个有序链表的函数
ListNode* mergeTwoLists(ListNode* head1, ListNode* head2) {
    if (head1 == nullptr) {
        return head2;
    }
    if (head2 == nullptr) {
        return head1;
    }

    ListNode* head = head1->val <= head2->val? head1 : head2;
    ListNode* cur1 = head->next;
    ListNode* cur2 = head == head1? head2 : head1;
    ListNode* pre = head;

    while (cur1 != nullptr && cur2 != nullptr) {
        if (cur1->val <= cur2->val) {
            pre->next = cur1;
            cur1 = cur1->next;
        } else {
            pre->next = cur2;
            cur2 = cur2->next;
        }
        pre = pre->next;
    }

    pre->next = cur1!= nullptr? cur1 : cur2;
    return head;
}
 

1. 节点结构定义:
使用struct定义了链表节点ListNode,包含一个存储节点值的int类型变量val和一个指向下一个节点的指针next,并通过构造函数初始化节点值,同时将next指针初始化为nullptr。

2. 函数定义:
mergeTwoLists函数接收两个指向链表头节点的指针head1和head2作为参数。

• 边界情况处理:
首先检查head1和head2是否为空,如果head1为空,直接返回head2;如果head2为空,直接返回head1。

• 确定合并后链表的头节点:
通过比较head1和head2的节点值,选择较小值的节点作为合并后链表的头节点head。

• 初始化指针:
根据选择的头节点,初始化cur1为头节点的下一个节点,cur2为另一个链表的头节点,pre为头节点。

• 合并过程:
进入while循环,只要cur1和cur2都不为空,就比较cur1和cur2的节点值,将较小值的节点连接到pre的下一个节点,然后更新相应的指针。

• 处理剩余节点:
当循环结束后,说明其中一个链表已经遍历完,将另一个链表剩余的节点连接到合并后链表的末尾。

• 返回结果:
最后返回合并后链表的头节点head。

http://www.dtcms.com/a/107609.html

相关文章:

  • 致敬生物信息学先驱:玛格丽特·戴霍夫(Margaret Dayhoff,1925-1983)
  • 多分类交叉熵
  • AIP-211 授权检查
  • transformer结构原理
  • Unity开发——Destory延迟销毁导致异常的处理
  • 关于 数据库 UNION 和 UNION ALL 的使用,以及 分库分表环境下多表数据组合后的排序和分页问题的解决方案 的详细说明,并以表格总结关键内容
  • 【黑科技护航安全】分布式光纤测温:让隐患无处可藏
  • Vite 内联 CSS 和 JS 的解决方案
  • 机器学习的一百个概念(7)独热编码
  • 大文件上传源码,支持单个大文件与多个大文件
  • 【三层架构有哪些?】
  • 函数fcntl(File Control)
  • spring AOP 事务 过滤器(Filter)与拦截器(Interceptor)
  • java项目分享-分布式电商项目附软件链接
  • C语言变长数组(VLA)详解:灵活处理动态数据的利器
  • 【大模型系列篇】大模型基建工程:使用 FastAPI 构建 MCP 服务器
  • 智能语音识别工具开发手记
  • Java 枚举类 Key-Value 映射的几种实现方式及最佳实践
  • 【Framework-Client系列】UIGenerate介绍
  • MTK AWB 色温曲线的进一步猜想
  • 时尚优雅奢华品牌包装徽标设计衬线英文字体安装包 Kagea – Luxury Women Ligature Font
  • 司南评测集社区 3 月上新一览!
  • 启服云商标管理软件:律师事务所的高效之选
  • 数据结构优化DP总结
  • SvelteKit 最新中文文档教程(17)—— 仅服务端模块和快照
  • 智能配电箱:重塑未来电力管理的核心枢纽
  • 大模型显卡网络
  • 爱普生RX8901CE实时时钟模块赋能智能监控系统的精准
  • 某某航空 同盾 blackbox 补环境
  • 华为云数据库服务实践