链表的反转—c++版本

过程分析: 

代码实现: 

#include <iostream>struct LinkNode{ //创建一个结构体做为链表的结点int data;           //数据域LinkNode* next;  //指针域
};void Print_Link(LinkNode* phead)     //打印链表
{while (phead != nullptr){std::cout << phead->data << " ";phead = phead->next;}std::cout << std::endl;
}LinkNode* inverse(LinkNode* phead)      //链表反转函数
{if (phead == nullptr || phead->next == nullptr)   //判断头指针是否指向链表头结点,或者链表是否存在return phead;LinkNode* pre_current = nullptr;LinkNode* current = phead;LinkNode* next_current = phead->next;while (1)            //遍历链表{current->next = pre_current;        //修改mid指向的结点的指针域,令其指向beg所指的结点if (next_current == nullptr)         //判断end是否为空,如果为空表示链表已经遍历完毕break;pre_current = current;          //整体偏移三个指针current = next_current;next_current = next_current->next;}phead = current;        //遍历结束后,链表完成反转,修改头指针指向新的链表头结点return phead;
}int main()
{LinkNode t6 = { 6,nullptr };LinkNode t5 = { 5,&t6 };      //只为做验证,用了静态创建链表的方式,实际中一般不会用这种方式LinkNode t4 = { 4,&t5 };LinkNode t3 = { 3,&t4 };LinkNode t2 = { 2,&t3 };LinkNode t1 = { 1,&t2 };LinkNode* head = &t1;        //创建头指针,用此方法反转链表可以不需要用到头指针,后面的函数的形参可以直接使用&t1,结果是一样的std::cout << "链表反转前元素为:\n";Print_Link(head);std::cout << "链表反转后元素为:\n";head = inverse(head);Print_Link(head);return 0;
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209757.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

va-Q-tec实现温度敏感产品运输过程质量控制温控无忧

摘要&#xff1a;温度敏感产品运输对供应链全流程的温度质量要求较高&#xff0c;往往需要借助特殊的温湿度监测技术产品。va-Q-tec与虹科Comet合作&#xff0c;采用虹科Comet的U系列温度记录仪&#xff0c;为集装箱运输过程提供完整的温控包装解决方案。 一、客户背景 va-Q-…

信息系统的安全保护等级的五个级别

信息系统的安全保护等级分为五级&#xff1a;第一级为自主保护级、第二级为指导保护级、第三级为监督保护级、第四级为强制保护级、第五级为专控保护级。 法律依据&#xff1a;《信息安全等级保护管理办法》第四条 信息系统的安全保护等级分为以下五级&#xff1a;   &#…

数字化转型过程中面临最大的问题是什么?如何借助数字化工具实现快速转型?

在科技快速发展的时代&#xff0c;数字化转型已经成为企业的重要战略。当企业努力适应数字化时代并取得成功时&#xff0c;他们可能会面临各种必须有效应对的挑战。   数字化转型不仅仅是将新技术应用到企业的运营中&#xff0c;还需要对企业的运营方式、与客户的互动方式和价…

一个ETL流程搞定数据脱敏

数据脱敏是什么&#xff1f; 数据脱敏是指在数据处理过程中&#xff0c;通过一系列的技术手段去除或者替换敏感信息&#xff0c;以保护个人隐私和敏感信息的安全的过程。数据脱敏通常在数据共享、数据分析和软件测试等场景下使用&#xff0c;它旨在降低数据泄露和滥用的风险。…

卫星信号监测可靠性提升10倍,移动性提升30倍!这家广播公司是这样做到的

来源&#xff1a;德思特测试测量 德思特案例 | 卫星信号监测可靠性提升10倍&#xff0c;移动性提升30倍&#xff01;这家广播公司是这样做到的 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 1 广播卫星频谱监测背景 频率的测量结果能够充分反映出节目播出的质量&am…

OpenGL YUV 和 RGB 图像相互转换出现的偏色问题怎么解决?

未经作者(微信ID:Byte-Flow)允许,禁止转载 文章首发于公众号:字节流动 早上知识星球里的一位同学,遇到 yuv2rgb 偏色问题,这个问题比较典型,今天展开说一下。 省流版 首先 yuv2rgb 和 rgb2yuv 之间的转换要基于相同的标准,转换使用不同的标准肯定会引起偏色,常见的…

kubernetes 部署 spinnaker

spinnaker简介 Spinnaker 是一个开源、多云持续交付平台&#xff0c;它将强大而灵活的管道管理系统与主要云提供商的集成相结合。Spinnaker 提供应用程序管理和部署&#xff0c;帮助您快速、自信地发布软件变更。 Spinnaker 提供了两组核心的功能&#xff1a; 应用管理与应用程…

第十一章 docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称&#xff08;uname -a 进行验证&#xff09;2.4 初始化sw…

redis的集群,主从复制,哨兵

redis的高可用 在Redis中&#xff0c;实现高可用的技术主要包括持久化、主从复制、哨兵和集群&#xff0c;下面分别说明它们的作用&#xff0c;以及解决了什么样的问题。 持久化&#xff1a; 持久化是最简单的高可用方法&#xff08;有时甚至不被归为高可用的手段&#xff09;…

【Flask使用】全知识md文档,4大部分60页第3篇:Flask模板使用和案例

本文的主要内容&#xff1a;flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用&#xff1a;宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…

企业微信身份验证

本篇主要是在上一篇获取第三方凭证基础上&#xff0c;用户通过三方网站自定义授权登录后获取用户信息&#xff0c;以实现用户绑定登录功能。 构造第三方应用授权链接 如果第三方应用需要在打开的网页里面携带用户的身份信息&#xff0c; 第一步需要构造如下的链接来获取授权c…

单片机调试技巧--栈回溯

在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…