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
# 遍历
# 链表
# 是一个
# 进阶
# 第一个
# 操作方法
# 复用
# 更清晰
# 内存管理
# 适合初学者
相关文章:
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
视频网站制作教程,怎么样制作优酷网的小视频?
如何配置支付宝与微信支付功能?
如何快速生成橙子建站落地页链接?
公司网站制作价格怎么算,公司办个官网需要多少钱?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在阿里云ECS服务器部署织梦CMS网站?
设计网站制作公司有哪些,制作网页教程?
如何通过服务器快速搭建网站?完整步骤解析
宝塔面板创建网站无法访问?如何快速排查修复?
建站主机解析:虚拟主机配置与服务器选择指南
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
建站与域名管理如何高效结合?
如何在IIS服务器上快速部署高效网站?
装修招标网站设计制作流程,装修招标流程?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
实例解析angularjs的filter过滤器
如何生成腾讯云建站专用兑换码?
浅谈Javascript中的Label语句
网站制作难吗安全吗,做一个网站需要多久时间?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
专业网站建设制作报价,网页设计制作要考什么证?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何在自有机房高效搭建专业网站?
定制建站哪家更专业可靠?推荐榜单揭晓
如何用西部建站助手快速创建专业网站?
网站制作说明怎么写,简述网页设计的流程并说明原因?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
平台云上自主建站:模板化设计与智能工具打造高效网站
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
简单实现Android验证码
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
建站主机选哪种环境更利于SEO优化?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
免费视频制作网站,更新又快又好的免费电影网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何在Windows虚拟主机上快速搭建网站?
h5在线制作网站电脑版下载,h5网页制作软件?
建站之星如何优化SEO以实现高效排名?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
如何在IIS中新建站点并解决端口绑定冲突?
Android自定义listview布局实现上拉加载下拉刷新功能
,怎么在广州志愿者网站注册?
宁波免费建站如何选择可靠模板与平台?
黑客入侵网站服务器的常见手法有哪些?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
*请认真填写需求信息,我们会在24小时内与您取得联系。