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

在C++中合并两个链表的问题

在C++中合并两个链表的问题可以通过以下方式解决:

  1. 创建一个新的链表,用于存储合并后的结果。
  2. 定义两个指针,分别指向两个链表的头节点。
  3. 比较两个链表当前节点的值,将较小的节点添加到新链表中,并将指针向后移动一位。
  4. 重复步骤3,直到其中一个链表的指针为空。
  5. 将另一个链表剩余的节点直接添加到新链表的末尾。
  6. 返回新链表作为合并后的结果。

以下是一个示例代码:

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

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

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
    ListNode* dummy = new ListNode(0); // 创建一个虚拟头节点
    ListNode* curr = dummy; // 当前节点指针

    while (l1 && l2) {
        if (l1->val < l2->val) {
            curr->next = l1;
            l1 = l1->next;
        } else {
            curr->next = l2;
            l2 = l2->next;
        }
        curr = curr->next;
    }

    // 将剩余的节点直接添加到新链表的末尾
    if (l1) {
        curr->next = l1;
    }
    if (l2) {
        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);

    // 输出合并后的链表
    ListNode* curr = mergedList;
    while (curr) {
        std::cout << curr->val << " ";
        curr = curr->next;
    }
    std::cout << std::endl;

    // 释放链表的内存
    curr = mergedList;
    while (curr) {
        ListNode* temp = curr;
        curr = curr->next;
        delete temp;
    }

    return 0;
}

这个问题的解决方案是通过比较两个链表的节点值,逐个将较小的节点添加到新链表中,直到其中一个链表的指针为空。最后,将剩余的节点直接添加到新链表的末尾。这样可以保证合并后的链表仍然是有序的。

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

相关·内容

3分32秒

【剑指Offer】25. 合并两个排序的链表

288
1分53秒

在Python 3.2中使用OAuth导入失败的问题与解决方案

11分18秒

day18_IDEA的使用与多线程/14-尚硅谷-Java语言高级-创建过程中两个问题的说明

11分18秒

day18_IDEA的使用与多线程/14-尚硅谷-Java语言高级-创建过程中两个问题的说明

11分18秒

day18_IDEA的使用与多线程/14-尚硅谷-Java语言高级-创建过程中两个问题的说明

4分29秒

day03_43_尚硅谷_硅谷p2p金融_解决MyScrollView使用中的两个小问题之一

12分31秒

day03_44_尚硅谷_硅谷p2p金融_解决MyScrollView使用中的两个小问题之二

34秒

PS使用教程:如何在Photoshop中合并可见图层?

5分53秒

Elastic 5分钟教程:使用跨集群搜索解决数据异地问题

1分26秒

PS小白教程:如何在Photoshop中完美合并两张图片?

-

如何看待当前AI技术在智能交通市场中的应用现状丨华为安平业务部

2分11秒

2038年MySQL timestamp时间戳溢出

领券