C++单向链表实现核心是定义含数据和next指针的ListNode结构,并用LinkedList类封装头指针及插入、遍历、删除、析构等操作,强调初始化nullptr、内存释放与指针安全。
用C++实现链表,核心是定义节点结构和管理指针。下面是一个简洁、可运行的单向链表示例,包含插入、遍历、删除等基本操作,适合初学者理解原理。
每个节点包含数据和指向下一个节点的指针:
struct ListNode {
int val;
ListNode* next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
};使用构造函数初始化,避免野指针;next 初始化为 nullptr 是关键习惯,防止未定义行为。
把头指针和操作方法封装成类,更清晰、易复用:
class LinkedList {
private:
ListNode* head;
public:
LinkedList() : head(nullptr) {}
// 头插法插入新节点
void push_front(int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
// 尾插法(需遍历到末尾)
void push_back(int val) {
ListNode* newNode = new ListNode(val);
if (!head) {
head = newNode;
return;
}
ListNode* cur = head;
while (cur->next) cur = cur->next;
cur->next = newNode;
}
// 遍历并打印所有值
void print() const {
ListNode* cur = head;
while (cur) {
std::cout << cur->val;
if (cur->next) std::cout << " → ";
cur = cur->next;
}
std::cout << std::endl;
}
// 按值删除第一个匹配节点(注意处理头节点)
void remove(int val) {
if (!head) return;
if (head->val == val) {
ListNode* tmp = head;
head = head->next;
delete tmp;
return;
}
ListNode* cur = head;
while (cur->next && cur->next->val != val) {
cur = cur->next;
}
if (cur->next) {
ListNode* toDelete = cur->next;
cur->next = toDelete->next;
delete toDelete;
}
}
// 析构函数:释放全部内存(重要!防内存泄漏)
~LinkedList() {
while (head) {
ListNode* tmp = head;
head = head->next;
delete tmp;
}
}};
在 main 中测试:
int main() {
LinkedList list;
list.push_back(10);
list.push_back(20);
list.push_front(5);
list.print(); // 输出:5 → 10 → 20
list.remove(10);
list.print(); // 输出:5 → 20
return 0;
}
注意:new 出的节点必须用 delete 释放,否则造成内存泄漏。析构函数已自动处理,无需手动调用。
向链表?节点增加 prev 指针,插入/删除逻辑稍复杂但结构对称基本上就这些。手写链表重在理解指针操作和内存管理逻辑,不是为了替代标准库。
# node
# ai
# c++
# 标准库
# 封装
# 构造函数
# 析构函数
# 指针
# 数据结构
# delete
# 遍历
# 链表
# 是一个
# 进阶
# 第一个
# 操作方法
# 复用
# 更清晰
# 内存管理
# 适合初学者
相关文章:
如何做网站制作流程,*游戏网站怎么搭建?
独立制作一个网站多少钱,建立网站需要花多少钱?
css网站制作参考文献有哪些,易聊怎么注册?
微信推文制作网站有哪些,怎么做微信推文,急?
建站VPS能否同时实现高效与安全翻墙?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何通过虚拟主机空间快速建站?
C++如何编写函数模板?(泛型编程入门)
如何通过wdcp面板快速创建网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
开封网站制作公司,网络用语开封是什么意思?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
如何通过虚拟主机快速搭建个人网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何在腾讯云免费申请建站?
如何用低价快速搭建高质量网站?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何在云服务器上快速搭建个人网站?
如何选择高效响应式自助建站源码系统?
建站主机是否属于云主机类型?
网站企业制作流程,用什么语言做企业网站比较好?
视频网站制作教程,怎么样制作优酷网的小视频?
,在苏州找工作,上哪个网站比较好?
兔展官网 在线制作,怎样制作微信请帖?
威客平台建站流程解析:高效搭建教程与设计优化方案
代购小票制作网站有哪些,购物小票的简要说明?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何快速建站并高效导出源代码?
制作网站外包平台,自动化接单网站有哪些?
如何通过西部数码建站助手快速创建专业网站?
如何做静态网页,sublimetext3.0制作静态网页?
建站之星后台管理:高效配置与模板优化提升用户体验
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
建站主机是否等同于虚拟主机?
如何确保FTP站点访问权限与数据传输安全?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
建站之星安装提示数据库无法连接如何解决?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何用腾讯建站主机快速创建免费网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
图册素材网站设计制作软件,图册的导出方式有几种?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
网站设计制作企业有哪些,抖音官网主页怎么设置?
*请认真填写需求信息,我们会在24小时内与您取得联系。