C++单链表需定义节点结构和链表类,手动管理内存;核心操作包括头插(O(1))、指定位置插入(需遍历)、按值删除(分头/中/尾处理),并需实现析构函数防止内存泄漏。
用 C++ 实现单链表,核心是定义节点结构、管理头指针,并封装插入、删除等操作。
不需要依赖 STL 容器,手动管理内存更利于理解数据结构本质。
每个节点包含数据域和指向下一节点的指针;链表类维护头指针(可为 nullptr 表示空表):
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
class LinkedList {
private:
ListNode* head;
public:
LinkedList() : head(nullptr) {}
~LinkedList(); // 后续需实现析构释放内存
};
时间复杂度 O(1),适合频繁在开头增删的场景:
void insertAtHead(int value) {
ListNode* newNode = new ListNode(value);
newNode->next = head;
head = newNode;
}需遍历到前一个节点,注意边界检查(i 小于 0 或超过长度时可忽略或报错):
void insertAt(int index, int value) {
if (index == 0) {
insertAtHead(value);
return;
}
ListNode* prev = head;
for (int i = 0; i < index - 1 && prev != nullptr; ++i) {
prev = prev->next;
}
if (prev == nullptr) return; // 位置无效
ListNode* newNode = new ListNode(value);
newNode->next = prev->next;
prev->next = newNode;
}以按值删除为例(删第一个匹配的节点),需处理三种情况:
void deleteByValue(int value) {
if (!head) return;
if (head->val == value) {
ListNode* temp = head;
head = head->next;
delete temp;
return;
}
ListNode* prev = head;
while (prev->next && prev->next->val != value) {
prev = prev->next;
}
if (prev->next) {
ListNode* toDelete = prev->next;
prev->next = toDelete->next;
delete toDelete;
}
}打印链表用于调试:
void print() {
ListNode* cur = head;
while (cur) {
std::cout << cur->val;
if (cur->next) std::cout << " → ";
cur = cur->next;
}
std::cout << std::endl;
}析构函数应逐个释放节点:
LinkedList::~LinkedList() {
while (head) {
ListNode* temp = head;
head = head->next;
delete temp;
}
}不复杂但容易忽略
# node
# c++
# 封装
# 析构函数
# 指针
# 数据结构
# delete
# 链表
# 遍历
# 第一个
# 不需要
# 下一
# 三种
# 为例
# 报错
# 最简单
相关文章:
如何用狗爹虚拟主机快速搭建网站?
建站之星如何防范黑客攻击与数据泄露?
宝塔Windows建站如何避免显示默认IIS页面?
浅析上传头像示例及其注意事项
如何确保FTP站点访问权限与数据传输安全?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
,石家庄四十八中学官网?
名字制作网站免费,所有小说网站的名字?
如何在IIS中配置站点IP、端口及主机头?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
网站图片在线制作软件,怎么在图片上做链接?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何通过虚拟主机快速搭建个人网站?
网站制作难吗安全吗,做一个网站需要多久时间?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星2.7模板:企业网站建设与h5定制设计专题
如何用搬瓦工VPS快速搭建个人网站?
Swift开发中switch语句值绑定模式
黑客入侵网站服务器的常见手法有哪些?
,网站推广常用方法?
如何在云主机上快速搭建网站?
制作营销网站公司,淘特是干什么用的?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何通过WDCP绑定主域名及创建子域名站点?
如何快速上传自定义模板至建站之星?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过PHP快速构建高效问答网站功能?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
香港服务器租用费用高吗?如何避免常见误区?
如何高效完成自助建站业务培训?
b2c电商网站制作流程,b2c水平综合的电商平台?
建站之星如何实现五合一智能建站与营销推广?
如何选择建站程序?包含哪些必备功能与类型?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何通过商城自助建站源码实现零基础高效建站?
如何通过万网虚拟主机快速搭建网站?
Android自定义控件实现温度旋转按钮效果
宁波自助建站系统如何快速打造专业企业网站?
学校建站服务器如何选型才能满足性能需求?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何通过wdcp面板快速创建网站?
如何在Windows虚拟主机上快速搭建网站?
高端云建站费用究竟需要多少预算?
青岛网站建设如何选择本地服务器?
Android使用GridView实现日历的简单功能
简历在线制作网站免费版,如何创建个人简历?
*请认真填写需求信息,我们会在24小时内与您取得联系。