当前位置: 首页 > news >正文

反转链表(C++)

1、迭代法的一种写法

ListNode* reverse_linkList(ListNode* head){if(head == nullptr || head->next == nullptr) return head;ListNode* begin = nullptr;ListNode* mid = head;ListNode* end = head->next;while(true){mid->next = begin;if(end == nullptr){break;}begin = mid;mid = end;end = end->next;}head = mid;return head;}

2、 迭代法的另一种写法

ListNode* reverse_linkList(ListNode* head) {ListNode* prev = nullptr;  // 指向已经反转部分的头节点ListNode* current = head;  // 指向当前待反转节点while (current != nullptr) {ListNode* nextNode = current->next;  // 保存当前节点的下一个节点current->next = prev;  // 反转指针方向prev = current;  // 更新已反转部分的头节点current = nextNode;  // 移动到下一个待反转节点}return prev;  // 返回反转后的头节点
}

3、 递归法实现

ListNode* reverse_linkList(ListNode* head) {if (head == nullptr || head->next == nullptr) {return head;  // 如果链表为空或只有一个节点,无需反转,直接返回}ListNode* newHead = reverse_linkList(head->next);  // 递归反转剩余部分head->next->next = head;  // 将当前节点的下一个节点的 next 指针指向当前节点,实现反转head->next = nullptr;  // 当前节点的 next 指针置为空return newHead;  // 返回新的头节点
}
http://www.lryc.cn/news/134983.html

相关文章:

  • 适配器模式:让不兼容的接口协同工作
  • 【1day】复现Milesight-VPNserver.js 任意文件读取漏洞
  • 前端代码规范
  • Java接入文心一言
  • 信息管理系统三级等保的一些要求
  • 第六届“蓝帽杯”电子取证模块(初赛)解析+全资源一次性分享
  • 《Go 语言第一课》课程学习笔记(九)
  • docker 安装nginx 和 elasticsearch ik 自定义分词
  • 谈谈收音机的发展
  • QTreeWidget——信号处理
  • 【Java从入门到精通|1】从特点到第一个Hello World程序
  • JAVA 读取jar包中excel模板
  • 解决方案:fatal error: openssl/bio.h: 没有那个文件或目录
  • 【MySQL系列】ALTER语句详解,以及UPDATE,DELECT,TRUNCATE语句的使用+区别
  • c++关键字 =delete和=default
  • idea 左下角的Git(Version Control)中显示Local Changes窗口
  • .net老项目中Jquery访问webservice
  • SpringBoot项目集成ElasticSearch服务
  • 2023年网络安全比赛--综合渗透测试(超详细)
  • 一次网络不通“争吵“引发的思考
  • 【使用Node.js搭建自己的HTTP服务器】
  • 回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)
  • ● 392.判断子序列 ● 115.不同的子序列
  • 4.SpringCloud 基本架构
  • springboot后端返回图片,vue前端接收并显示的解决方案
  • 算法|Day46 动态规划14
  • 宠物小程序开发攻略:五分钟教你打造宠物店小程序
  • open suse 15.5(任意版本) 使用阿里云的repo
  • 第一篇:编写 Hello World 程序
  • python 打印沁园春 雪 居中对齐 文本对齐