当前位置: 首页 > 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。

https://github.com/algorithmzuo


http://www.mrgr.cn/news/96930.html

相关文章:

  • Windows系统服务器安装Office Online Server
  • leetcode 62. Unique Paths
  • DeepSeek-R1 模型现已在亚马逊云科技上提供
  • 【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器
  • 关于依赖注入框架VContainer DIIOC 的学习记录
  • el-select+el-tree、el-select+vl-tree实现下拉树形选择
  • VS+Qt配置QtXlsx库实现execl文件导入导出(全教程)
  • 论文阅读9——更严格的汽车排放标准对气候、健康、农业和经济的影响
  • 酶动力学预测工具CataPro安装教程
  • LeetCode Hot100 刷题笔记(4)—— 二叉树、图论
  • 详解相机的内参和外参,以及内外参的标定方法
  • 论文阅读10——解开碳排放与碳足迹之间的关系:文献回顾和可持续交通框架
  • 国产系统服务器识别不到SATA盘
  • 洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构
  • SQL语句(一)—— DDL
  • 【大模型系列篇】大模型基建工程:使用 FastAPI 构建 SSE MCP 服务器
  • WPF学习路线
  • 02_使用Docker在服务器上部署Jekins实现项目的自动化部署
  • 亚马逊云科技携手 DeepSeek:开启企业级生成式 AI 新征程
  • react中hooks使用