数据结构1:单链表反转java代码解释
来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下
首先完整代码如下:
//将单链表反转
public static void reversetList(HeroNode head) {//如果当前链表为空,或者只有一个节点,无需反转,直接返回if(head.next == null || head.next.next == null) {return ;}//定义一个辅助的指针(变量),帮助我们遍历原来的链表HeroNode cur = head.next;HeroNode next = null;// 指向当前节点[cur]的下一个节点HeroNode reverseHead = new HeroNode(0, "", "");//遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead 的最前端//动脑筋while(cur != null) { //如果cur=null,说明已经遍历结束next = cur.next;//先暂时保存当前节点的下一个节点,因为后面需要使用cur.next = reverseHead.next;//将cur的下一个节点指向新的链表的最前端reverseHead.next = cur; //将cur 连接到新的链表上cur = next;//让cur后移}//将head.next 指向 reverseHead.next , 实现单链表的反转head.next = reverseHead.next;//注意head才是真正的头,reverseHead只是用来临时当一下头节点
}
代码实现的功能如下图:
下面对代码的关键位置插入了图片进行说明:
//将单链表反转
public static void reversetList(HeroNode head) {
//如果当前链表为空,或者只有一个节点,无需反转,直接返回
if(head.next == null || head.next.next == null) {
return ;
}
//定义一个辅助的指针(变量),帮助我们遍历原来的链表
HeroNode cur = head.next;
HeroNode next = null;// 指向当前节点[cur]的下一个节点
HeroNode reverseHead = new HeroNode(0, "", "");
//遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead 的最前端
//动脑筋
while(cur != null) { //如果cur=null,说明已经遍历结束
next = cur.next;//先暂时保存当前节点的下一个节点,因为后面需要使用
下图考虑一个中间情况:
cur.next = reverseHead.next;//将cur的下一个节点指向新的链表的最前端
reverseHead.next = cur; //将cur 连接到新的链表上
cur = next;//让cur后移
}
(如上图,此时除了head头节点没连上外,其他的都已经逆序了)
//将head.next 指向 reverseHead.next , 实现单链表的反转
head.next = reverseHead.next;//注意head才是真正的头,reverseHead只是用来临时当一下头节点
}
数据结构1:单链表反转java代码解释相关推荐
- Java单链表反转 详细过程
Java单链表反转 Java实现单链表翻转 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51119499 (一) ...
- 浅谈:数据结构之单链表,java代码演示单链表
单链表 本文是观看尚硅谷韩老师视频学习总结,部分来源网络. 单链表介绍 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...
- java数据结构 - 单链表(腾讯面试题实现单链表反转)
直接上实现代码 //单链表的反转public static void reverseList(HeroNode head){//如果当前链表为空,或只有一个节点,无需反转if (head.next = ...
- Java实现单链表反转操作
单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据.二是指针域,用于存储下一个节点的地址.在Java中定义如下: public class ...
- 剑指offter Java单链表反转
应上篇文章说的做一篇单链表的反转问题.关于怎么创建单链表问题我已经写过了一篇:https://blog.csdn.net/nisemono_ct/article/details/95514797 单链 ...
- 单链表反转的原理和python代码实现
链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...
- Java数据结构——用单链表编写一个简易通讯录
Java数据结构--用单链表编写一个简易通讯录 1.定义线性表的抽象数据类型(接口) 2.定义单链表的结点Node类 3.定义数据域中的联系人Person类 4.编写顺序表(类) 5.编写测试程序(m ...
- python怎么反转单链表_单链表反转python实现代码示例
单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表 循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可. 代码: class Li ...
- java 反转jia链表_Java实现单链表反转
本文主要介绍单链表反转的两种方法,记录如下: 1. package com.leetcode; public class ListReverse { public static void main(S ...
最新文章
- 一张图,看编程语言十年热度变化
- Win7部署基础知识(7):使用Imagex捕获和安装映像
- Python名称空间是什么?
- Android --- 详细介绍透明式状态栏和沉浸式状态栏
- Serverless 躁动背后的 5 大落地之痛
- 中国大学MOOC 计算机组成原理第4章 测试(下)
- 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】
- 【CCF】201409-2 画图
- beyond唱片_如何数字化您的唱片
- 自动化所在语音识别研究中获进展
- ELK logstash的grok 自带的正则匹配、自定义正则 使用
- 二维码加logo demo
- js获取某一天是星期几
- 漏斗模型_绘制漏斗图
- input type属性
- 高性能计算机与网格的研究开发态势
- 对图片进行奇异值分解(SVD)
- 微信小程序开发实验2
- 外贸知识通俗教程(中)
- 医院数字化如何实现?看这篇经典实践案例