逆转单向链表看这一篇就够了【JAVA】
逆转单向链表
逆转前: 1 -> 2 -> 3 -> 4 -> 5 -> null
逆转后: 5 -> 4 -> 3 -> 2 -> 1 -> null
方法一、循环迭代
public Node reverse(Node head) {
if (head == null || head.next == null) {
return head;
}
// 取前面节点
Node pre = head;
// 取后面节点
Node cur = head.next;
// 临时节点
Node temp = null;
while (cur != null) {
// 1. 保存后节点的指向节点 因为要替换后节点的指向节点为他的前节点
temp = cur.next;
// 2. 把后节点的指向的节点替换成前节点
cur.next = pre;
// 下一轮要替换的前节点和后节点
// 第一次 pre = 1 cur =2 || 那第二次 就得 pre = 2 cur = 3
pre = cur;
cur = temp;
}
// 在上述过程中未替换首节点的指向节点 这里首节点将成为尾节点 所以指向null
head.next = null;
// 因为循环的条件是cur是否为null 如果cur为null 那 pre将是原来链表的尾节点
// 就是逆转后的首节点
return cur;
}
方法二:递归
public Node recursionNode(Node head) {
if (head == null || head.next == null) {
return head;
}
// head 1 2 3 4
Node node = reverseNode(head.next);
// 展示顺序 head 4 3 2 1
// 第一轮:
// 当前指向顺序 4 -> 5
head.next.next = head; // 变成了 5 -> 4 但是4的指针仍然指向5 也就是双向的
// 所以 4 -> null 变成单向
head.next = null;
// node是最后一个元素 5 也就是逆转后的 第一个元素
return node;
}
更多文章查看个人博客 个人博客地址:逆转单向链表
逆转单向链表看这一篇就够了【JAVA】的更多相关文章
- Python3玩转单链表——逆转单向链表pythonic版
[本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表. 单向链表中的节点不光有代表方向的指针变量,也有值变量.所以我 ...
- Java中的多线程=你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- JVM内存模型你只要看这一篇就够了
JVM内存模型你只要看这一篇就够了 我是一只孤傲的鱼鹰 让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这 ...
- 【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- 2019-5-25-win10-uwp-win2d-入门-看这一篇就够了
title author date CreateTime categories win10 uwp win2d 入门 看这一篇就够了 lindexi 2019-5-25 20:0:52 +0800 2 ...
- 鸿蒙应用程序Ability(能力)看这一篇就够
本节概述 什么是Ability Ability分类 Ability生命周期 Ability之间跳转 什么是Ability Ability意为能力,是HarmonyOS应用程序提供的抽象功能.在Andr ...
- windows server 2019 域控批量新增不用,只看这一篇就够了,别的不用看
windows server 2019 域控批量新增不用,只看这一篇就够了,别的不用看 1. 新建excel表格 A B C D E 姓 名 全名 登录名 密码 李 四 李四 李四 test123!@ ...
随机推荐
- P5431 【模板】乘法逆元2
洛谷题目链接 刚开始做乘法逆元还是有点懵逼的~ 以下式子都在模\(p\)意义下进行 我们把式子改一下,变成:\[\sum\limits_{i=1}^nk^i\times a_i^{-1}\] 我们先算 ...
- Cogs 329. K- 联赛(最大流)
K- 联赛 ★★★ 输入文件:kleague.in 输出文件:kleague.out 简单对比 时间限制:1 s 内存限制:32 MB [问题描述] K- 联赛职业足球俱乐部的球迷们都是有组织的训练有 ...
- 「CF375E」Red and Black Tree「树形DP」
题意 给定一个结点颜色红或黑的树,问最少进行多少次交换黑.红结点使得每个红结点离最近的黑结点距离\(\leq x\). \(1\leq n \leq 500, 1 \leq x \leq 10^9\) ...
- visual studio2015窗体中控件的属性中文说明不见了
右击属性窗口,然后选中好说明就ok了.
- Codeforces 704E Iron Man [树链剖分,计算几何]
Codeforces 这题--真是搞死我了-- 好不容易下定了决心要不颓废,要写题,结果一调就调了十几个小时-- 思路 我们发现在树上做非常不舒服,于是树链剖分之后一次在重链上的移动就可以看做是在df ...
- 齿轮 HYSBZ - 4602 (DFS实现)
齿轮 HYSBZ - 4602 题意:很好理解就不啰嗦了. 致谢:感谢队友小明. 题解:嗯,一开始想到的是并查集,后来,就先看了另一道题,xj写dfs和暴力,就卡死了.于是来补这题了,前向星建图 题解 ...
- Python的is和==
is是对比地址:==是对比值
- yum安装错误记录
原因:使用yum安装libvirt以后,后续没有使用yum -remove 包名去移除这个包,接着使用源码安装了libvirt服务,当我卸载源码安装的libvirt以后,通过yum重新安装libvir ...
- mysql的 UUID的生成方式
之前一直用的 int 自增的方式,之后总觉得缺少自信. 之后,我觉得采用uuid的方式,可能会好一些,至于用户统计排序等,则另用属性进行记录. 这里设计到一对矛盾: 安全性 与 网络带宽利 ...
- 关于Kernel的思考
学习播客_KLDA(推导得很通俗,下面的推导就是源于此篇博客) 第一部分:按照自己的理解,模仿抄!学习播客来完成一下KLDA的推导. 第二部分:对于Kernel的思考 KLDA:顾名思义,就是把Ker ...