C++ 实例化对象 #
使用类名实例化对象的方式:
类名 变量 = 类名();使用
new方式动态分配内存:类名* 指针名 = new 类名();
#include<bits/stdc++.h>
using namespace std;
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) {}
};
int main() {
// 节点创建
ListNode *node1 = new ListNode; // 创建空节点
ListNode *node2 = new ListNode(); // 初始化值为 0 的节点
ListNode *node3 = new ListNode(100); // 初始化值为 100 的节点
// 插入节点
node1->next = node2;
// 创建链表:链表是多个节点串联起来的
ListNode *head = new ListNode(); // 头节点
// 循环前最好设置一个哑节点(dummy node)
ListNode *p = head; // 指针 p 用来遍历链表
int i = 1;
while (i < 5) {
ListNode *node = new ListNode(i); // 创建一个新的节点
p->next = node; // 插入节点到链表中
p = p->next; // 移动指针
i++;
}
p->next = nullptr; // 最后一个节点的 next 指针指向 nullptr
// 遍历链表并输出
p = head;
while (p) {
cout << p->val << " "; // 输出当前节点的值
p = p->next; // 移动到下一个节点
}
// 删除节点
ListNode *pre = p->next; // 指向要删除的节点
p->next = p->next->next; // 跳过要删除的节点
delete pre; // 释放要删除的节点内存
// nullptr 代表空指针,NULL 代表 0(不推荐使用 NULL)
pre = nullptr; // 将指针 pre 置为空
}
代码说明: #
链表节点的定义:
ListNode结构体包含一个整数val和一个指向下一个节点的指针next。该结构体提供了多个构造函数来支持不同的初始化方式。节点的创建与插入:
使用new操作符创建节点,可以通过不同的方式初始化节点的值。节点插入通过修改next指针连接新节点。链表的遍历:
使用while循环遍历链表,打印每个节点的值,直到到达链表的末尾(nullptr)。删除节点:
删除链表中的节点时,首先将指针指向要删除的节点,并将其从链表中移除,然后使用delete释放该节点的内存。
注意事项: #
- 在删除节点时,特别是使用
delete操作符时,确保指针已经正确指向了节点,避免出现内存泄漏。 - 建议使用
nullptr来代替NULL,nullptr是 C++11 引入的空指针常量,类型安全。!
