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. 两数相加-高精度链表版+自用语法笔记

介绍了创建链表节点的2方法:堆分配、栈分配
浙公网安备 33010602011771号