C++如何自定义单向链表ListNode
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下C++如何自定义单向链表ListNode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!链表有两种:1、带
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
开源vpn服务器
汽车ecm软件开发
select从数据库取值
网站的数据库丢失
共建网络安全共享文明倡议书
计算机网络技术什么网站好
海南致远创科网络技术有限公司
xflow服务器安装不上
软件开发商需要的证件
罗湖区无源网络技术开发咨询报价
贵州智慧团建软件开发系统
网络技术简明教程课后答案
scumpve服务器推荐亚服
杭州迪普网络安全
科达奇软件开发有限公司
服务器加cpu需要提升卡吗
网易服务器爆炸
河南智慧城管软件开发
梦想之城服务器
政府网络安全方面存在的问题
购物车功能哪种数据库
广东初越网络技术有限公司好吗
平板显示服务器异常是怎么回事
打开手机就显示未连接到服务器
各种数据库结构区别
奇迹ex902数据库
乡镇网络安全主题班会
卡丁车视频软件开发
星星网络安全海报
沈阳华纳迈特网络技术有限公司