C++如何自定义单向链表ListNode
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,小编给大家分享一下C++如何自定义单向链表ListNode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!链表有两种:1、带
千家信息网最后更新 2024年11月22日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安全错误
数据库的锁怎样保障安全
rpu软件开发
数据库access电脑软件
市场常见数据库
软件开发那些大学好
连接医院网络安全吗
新华互联网科技推荐
服务器数据备份另一台电脑
第一代网络安全技术我们称为
三国志战略版私人服务器
我的世界1.17单机像卡服务器
中科院信工所西电网络安全
上海网络技术服务案例
对象数据库有哪些
cfhd未连接到服务器
家庭网络安全的解决措施
数据库学习的结论成果
机顶盒桌面软件开发
方舟生存进化付费服务器
服务器需要一直开机吗
上栗县委网络安全和信息化
邵阳软件开发工程师
北京吉顿特网络技术有限公司
db2 数据库客户端
软件开发专业好的二本大学
港澳通行证指纹连接国家数据库
青松上海贸侃网络技术有限公司
在服务器上搭建个人网站的区别
服务器安全边界是什么
上海氩紫网络技术有限公司
全区网络安全知识竞赛