C++学习记录-旧题新做-链表求和

旧题记录:

https://blog.csdn.net/chamao_/article/details/143682196?fromshare=blogdetail&sharetype=blogdetail&sharerId=143682196&sharerefer=PC&sharesource=chamao_&sharefrom=from_link

C++解法:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode head3(0);
        ListNode* l3 = &head3;
        int carry = 0;
        while (l1 != nullptr || l2 != nullptr || carry != 0) {
            int sum = carry;  // 先加上进位
    
            // 如果 l1 不为空,获取 l1 的值并移动到下一个节点
            if (l1) {
                sum += l1->val;
                l1 = l1->next;
            }
    
            // 如果 l2 不为空,获取 l2 的值并移动到下一个节点
            if (l2) {
                sum += l2->val;
                l2 = l2->next;
            }
    
            // 创建一个新节点存储当前的数位
            ListNode* newNode = new ListNode(sum % 10);
            carry = sum / 10;  // 更新进位
    
            // 将新节点添加到结果链表
            l3->next = newNode;
            l3 = l3->next;
        }
 
        return head3.next; 
    }
};

其中:ListNode head3(0);这里创建栈对象,而不是指针。因为这个变量是只在函数内使用,如果用new创建,则不能自动释放内存,栈对象在函数返回后会自动释放内存,不用担心内存泄漏。

什么时候适合用堆,什么时候适合用栈?

生命周期短、作用域明确、函数内使用 → 栈
生命周期长、跨函数/返回后仍要用、大小不确定 → 堆

这句话 90% 情况都适用。

相关推荐
FlightYe9 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
ZhengEnCi9 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考9 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
by2099910 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
Rover Ramble10 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长11 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊11 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
夜不会漫长12 小时前
C++:红黑树
数据结构·算法