C++如何自定义单向链表ListNode
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下C++如何自定义单向链表ListNode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!链表有两种:1、带
千家信息网最后更新 2025年11月08日C++如何自定义单向链表ListNode
小编给大家分享一下C++如何自定义单向链表ListNode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
链表有两种:
1、带头结点,头结点存放的是链表的长度,从第二个节点开始存放数据。
2、不带头结点,没有存放链表长度的节点,从头结点开始就存放数据。
小编这里定义的链表是第二种。
直接上代码:
#include#include #include #include using namespace std;struct ListNode{ int val; //当前节点的值 ListNode *next; //指向下一个节点的指针 ListNode() : val(0), next(nullptr) {} //初始化当前结点值为默认值0,指针为空 ListNode(int x) : val(x), next(nullptr) {} //初始化当前结点值为x,指针为空 ListNode(int x, ListNode *next) : val(x), next(next) {} //初始化当前结点值为x,下一个绩点为next};class Solution{public: //创建长度为len的单向链表 void createList(ListNode *head,int len){ for(int i=1;i val=i*i; //为节点赋值 node->next=nullptr; head->next=node; //head指向下一个节点(即当前节点) head=node; //将当前节点设为head } cout<<"Create a new ListNode with len of "< val<<'\t'; head=head->next; } cout< node; while(head!=nullptr) { node.push_back(head->val); head=head->next; } while(!node.empty()) { //先输出node中的最后一个元素,再删除最后一个元素。而不是先对node做reverse再正向输出。 cout< next!=nullptr) //while循环结束后head就是尾结点了 head=head->next; head->next=node; } } //更改链表尾节点数值 void changeBackValue(ListNode *head,int val){ assert(head!=nullptr); while(head->next!=nullptr) //while循环结束后head就是尾结点了 head=head->next; head->val=val; } //删除链表尾节点 void popBack(ListNode *head){ assert(head!=nullptr); while(head->next->next!=nullptr) //while循环结束后head是倒数第二个节点,其next指向尾节点 head=head->next; head->next=nullptr; //删除尾节点 //注意不要直接delete尾结点,因为尾结点的next是nullptr,直接delete nullptr会输出很多乱码。 } //删除链表中节点值等于指定值的节点(不包括头节点) void deleteNode(ListNode *head, int val) { assert(head != nullptr); ListNode *node = head; //copy一份链表 while (head->next != nullptr) { if (head->next->val == val) node->next=head->next->next; head=head->next; node=node->next; } } //清空列表 void clearList(ListNode *head){ head->next=nullptr; //清楚头结点之后的所有节点 //清空列表的功能一直不知道怎么实现,头结点不知道怎么删除。 }};int main(){ Solution solution; ListNode *listnode=new ListNode(5,nullptr); //初始化链表的head节点 solution.printList(listnode); // 5 solution.createList(listnode,5); solution.printList(listnode); // 5 1 4 9 16 solution.pushBack(listnode,30); solution.printList(listnode); // 5 1 4 9 16 30 solution.reversePrintList(listnode); // 30 16 9 4 1 5 solution.changeBackValue(listnode,88); solution.printList(listnode); // 5 1 4 9 16 88 solution.popBack(listnode); solution.printList(listnode); // 5 1 4 9 16 solution.pushBack(listnode,101); solution.printList(listnode); // 5 1 4 9 16 101 solution.deleteNode(listnode,9); solution.printList(listnode); // 5 1 4 16 101 solution.clearList(listnode); solution.printList(listnode); // 5 cout<<"END"< 程序输出:
5
Create a new ListNode with len of 5 successfully.
5 1 4 9 16
5 1 4 9 16 30
30 16 9 4 1 5
5 1 4 9 16 88
5 1 4 9 16
5 1 4 9 16 101
5 1 4 16 101
5
END以上是"C++如何自定义单向链表ListNode"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
节点
结点
输出
单向
指向
指针
篇文章
长度
循环
C++
元素
内容
就是
数值
数据
清楚
不怎么
乱码
从头
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
sql数据库管理界面
如何将数据库导出为sql文件
服务器如何增强安全性
郑州睿格软件开发公司
vue中可以直接查数据库吗
河北统一软件开发
Fshower数据库
如何让管理系统搭载服务器
广东蜂助网络技术有限公司
计算机网络技术自荐书50字
网络安全教育工作会议
pg数据库取两位小数点
北京5g时代网络安全
虹口区节能软件开发厂家直销
网络安全教育依然
十一选五遗漏数据库
宽城区正规网络技术咨询诚信合作
定时下载服务器数据
服务器查磁盘空间
数据库漏洞扫描 开源
数据库智能运维与实践
完整庞大的数据库
三星2161打印机服务器
橘子端apex哪个服务器不卡
河南服务器电源批发
河北手机软件开发技术
通达oa服务器配置清单
期刊数据库技术文案
服务器 gpt
icloud如何同步数据库