C++如何自定义单向链表ListNode
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下C++如何自定义单向链表ListNode,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!链表有两种:1、带
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网科技公司起名
港股互联网科技股
平安科技 互联网
奇酷互联网络科技公司
卓越科技互联网 招聘
青海省互联网新科技
济南和联互联网科技有限公司
成都玖崟互联网科技有限公司乐商圈怎么样
互联网科技产品
互联网之后的科技是什么
哈尔滨新华互联网科技学院
阿里巴巴算科技企业还是互联网
科技互联网大厂
链环科技传统企业怎么转型互联网
青海科技产业互联网发展
亳州好赞互联网科技有限公司
互联网数据科技专业
广州富喜互联网络科技
富国互联网科技002692
互联网和科技技术
智网互联网科技
奇酷互联网络科技公司
顺玮阁互联网科技
丰台科技园 互联网公司
西藏七维空间互联网科技有限公司
工业互联网科技创业
云鲸互联网络科技有限公司
米泉互联网科技专业怎么样
黑龙江互联网科技公司