C++链表小册子
懒人操作
ListNode* p = new ListNode(); //无参数创建 p->val = 2;
ListNode* q = new ListNode(2); //含参创建
1.简记
对于C++链表类的创建,有以下简记:
-
堆分配,
new
作为右值。返回指针。对象生命周期手动管理,需要显式删除(delete
)ListNode dummy(0);
-
栈分配,返回
ListNode
。仅在作用域内生效(和常见的初始化int
一样)。要得到ListNode
指针需要&
取地址
2.多说两句
ListNode dummy(0);
是栈分配。这里dummy
是一个局部变量,它的类型是 ListNode
。这里,dummy
是一个局部变量,它的类型是 ListNode
,并且通过调用 ListNode
的构造函数(带有一个整数参数)来初始化。这个对象存储在栈上,这意味着它的生命周期与其所在的作用域(通常是一个函数)绑定:一旦出了作用域,这个对象会自动被销毁。
new
关键字用于动态地在堆上分配内存,并返回一个指向新分配的对象的指针。这个新对象是通过调用 ListNode
的构造函数初始化的。与栈分配的对象不同,堆分配的对象不会在离开作用域时自动销毁。它们会一直存在,直到通过 delete
操作显式地被删除。这种方式允许在函数调用结束后仍保持对象存在,但要求开发者负责管理对象的生命周期,包括避免内存泄漏。
3.算法题
题目、题解:
21. 合并两个有序链表
21. 合并两个有序链表-二路归并(双指针)
2. 两数相加
2. 两数相加-高精度链表版+自用语法笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步