C++链表小册子

懒人操作

ListNode* p = new ListNode(); //无参数创建
p->val = 2;
ListNode* q = new ListNode(2); //含参创建

1.简记

对于C++链表类的创建,有以下简记:

  • 堆分配,new作为右值。返回指针。对象生命周期手动管理,需要显式删除(deleteListNode dummy(0);

  • 栈分配,返回ListNode。仅在作用域内生效(和常见的初始化int一样)。要得到ListNode指针需要&取地址

2.多说两句

ListNode dummy(0);是栈分配。这里dummy 是一个局部变量,它的类型是 ListNode。这里,dummy 是一个局部变量,它的类型是 ListNode,并且通过调用 ListNode 的构造函数(带有一个整数参数)来初始化。这个对象存储在栈上,这意味着它的生命周期与其所在的作用域(通常是一个函数)绑定:一旦出了作用域,这个对象会自动被销毁。

new 关键字用于动态地在堆上分配内存,并返回一个指向新分配的对象的指针。这个新对象是通过调用 ListNode 的构造函数初始化的。与栈分配的对象不同,堆分配的对象不会在离开作用域时自动销毁。它们会一直存在,直到通过 delete 操作显式地被删除。这种方式允许在函数调用结束后仍保持对象存在,但要求开发者负责管理对象的生命周期,包括避免内存泄漏。

3.算法题

题目、题解:
21. 合并两个有序链表
21. 合并两个有序链表-二路归并(双指针)
2. 两数相加
2. 两数相加-高精度链表版+自用语法笔记

posted @ 2024-04-05 23:05  修子xiu1zi3  阅读(2)  评论(0编辑  收藏  举报