来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下

首先完整代码如下:

//将单链表反转
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代码解释相关推荐

  1. Java单链表反转 详细过程

    Java单链表反转 Java实现单链表翻转     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51119499 (一) ...

  2. 浅谈:数据结构之单链表,java代码演示单链表

    单链表 本文是观看尚硅谷韩老师视频学习总结,部分来源网络. 单链表介绍 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...

  3. java数据结构 - 单链表(腾讯面试题实现单链表反转)

    直接上实现代码 //单链表的反转public static void reverseList(HeroNode head){//如果当前链表为空,或只有一个节点,无需反转if (head.next = ...

  4. Java实现单链表反转操作

    单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据.二是指针域,用于存储下一个节点的地址.在Java中定义如下: public class ...

  5. 剑指offter Java单链表反转

    应上篇文章说的做一篇单链表的反转问题.关于怎么创建单链表问题我已经写过了一篇:https://blog.csdn.net/nisemono_ct/article/details/95514797 单链 ...

  6. 单链表反转的原理和python代码实现

    链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...

  7. Java数据结构——用单链表编写一个简易通讯录

    Java数据结构--用单链表编写一个简易通讯录 1.定义线性表的抽象数据类型(接口) 2.定义单链表的结点Node类 3.定义数据域中的联系人Person类 4.编写顺序表(类) 5.编写测试程序(m ...

  8. python怎么反转单链表_单链表反转python实现代码示例

    单链表的反转可以使用循环,也可以使用递归的方式 1.循环反转单链表 循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可. 代码: class Li ...

  9. java 反转jia链表_Java实现单链表反转

    本文主要介绍单链表反转的两种方法,记录如下: 1. package com.leetcode; public class ListReverse { public static void main(S ...

最新文章

  1. 一张图,看编程语言十年热度变化
  2. Win7部署基础知识(7):使用Imagex捕获和安装映像
  3. Python名称空间是什么?
  4. Android --- 详细介绍透明式状态栏和沉浸式状态栏
  5. Serverless 躁动背后的 5 大落地之痛
  6. 中国大学MOOC 计算机组成原理第4章 测试(下)
  7. 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】
  8. 【CCF】201409-2 画图
  9. beyond唱片_如何数字化您的唱片
  10. 自动化所在语音识别研究中获进展
  11. ELK logstash的grok 自带的正则匹配、自定义正则 使用
  12. 二维码加logo demo
  13. js获取某一天是星期几
  14. 漏斗模型_绘制漏斗图
  15. input type属性
  16. 高性能计算机与网格的研究开发态势
  17. 对图片进行奇异值分解(SVD)
  18. 微信小程序开发实验2
  19. 外贸知识通俗教程(中)
  20. 医院数字化如何实现?看这篇经典实践案例

热门文章

  1. 一个具有多模型融合能力的网络或许是这样的
  2. openpose_net随机搜索网络源代码
  3. 从源码分析DEARGUI之add_selectable
  4. pytorch使用mean降维打击
  5. 自动化学习的正确姿势
  6. struts2的核心和工作原理
  7. mysql 3/17/2016
  8. rpm包安装apache发布多个虚拟主机
  9. javaScript事件(二)事件处理程序
  10. cent os 6 fdisk fat32