应上篇文章说的做一篇单链表的反转问题。关于怎么创建单链表问题我已经写过了一篇:https://blog.csdn.net/nisemono_ct/article/details/95514797
单链表反转
之前没弄懂单链表的结构,所以做起来一头雾水,但是弄懂以后,看单链表就类似于一个ArrayList,除了存储结构不一样,区别不大。
先放代码,然后在详细解释吧思想吧。为了更直观看到地址的变化,我选择了在DeBug模式下运行的。

public void ReverseList(){              //单链表反转ListNode newHead=null;              //创建一个新链表ListNode pNode=head;                //pNode记录链表当前的头地址while(pNode!=null){ListNode pNext=pNode.next;      //记录当前链表的下一个地址ListNode p=pNode;               //记录当前链表的总长度p.next=newHead;                 //当前地址的指向,让他指向一个新的链表newHead=p;                      //让新链表记录,新建的链表地址以及长度pNode=pNext;                    //上边操作过了p,所以必须要让pNode等于当前链表下一个节点 否则链表会断掉}head=newHead;

但是Debug参数没办法复制,我放上一张图片。

之前以为Java不存在指针,然而实际情况确实Java中有指针,只是我们一般用不到。再说思路前,先画一张图,表述一下单链表的结构吧。

链表地址可以不连续,因为有next指针指向下一个地址。这里连续是因为程序在运行的过程中开辟的是一段连续的地址空间。
先介绍一下我的思路方式。我是创建了一个新的链表,然后让新链表,一节一节的吃掉原来的链表,吃到最后,就会出现循序反转的情况。

第一次循环后,指针位置。
实际上除了中间的两行代码:

p.next=newHead;                 //当前地址的指向,让他指向一个新的链表
newHead=p;

其他的代码一直都是在记录地址位置,防止链表指向空后,找不回来了。
这两行代码干了什么事呢,没执行一次循环,newHead就吃一个节点。一共五个循环,我放五张图表述吧,语言不好组织,也不形象。

为了防止图片表达不能清楚描述,前边三幅图都是没执行循环中pNode=pNext; 语句的地址




写在最后的,Java中的指针和C++是一样的,地址值发生改变,相对的指针指向的值都会改变。拿最后一张图举例,如果对pNext执行一个pNext=newHead操作。pNode与p都会指向newHead。如果你发现你的链表经常中断,不妨看下是不是改变了地址中的值。

希望这篇博客能帮助新手更好理解链表,也希望大佬指正出写的错误,和不到位的地方。

剑指offter Java单链表反转相关推荐

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

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

  2. java 单链表反转_Java实现单链表翻转详解

    单链表翻转比如有如下链表: 需要按照C B A 输出,我们可以有好几种方法: package org.andy.test; import java.util.ArrayList; import jav ...

  3. java单链表反转(头插法)详解

    链表反转思路(简述): 链表分为单链表和双链表,细分为单向循环链表和双向循环链表.本章节主要讲述单向链表的反转.在接触到这张文章之前相信大家已经对链表(链表的组成部分)有所了解,链表内部由节点构成,每 ...

  4. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

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

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

  6. 数据结构1:单链表反转java代码解释

    来源于尚硅谷的老师代码,只因其中有几行代码自己课上没听明白,课后自己整理了一下 首先完整代码如下: //将单链表反转 public static void reversetList(HeroNode ...

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

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

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

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

  9. 剑指offter笔记

    剑指offter笔记 数组中重复的数字 二维数组中的查找 替换空格 从尾到头打印链表 递归反转链表解题思路 重建二叉树 用两个栈实现队列 斐波那契数列 青蛙跳台阶问题 旋转数组的最小数字 矩阵中的路径 ...

最新文章

  1. 输入n,求n位以内的水仙花数
  2. 《敏捷时代》作者访谈录
  3. java web接收POST数据
  4. ajax成功或失败的原因,实际上成功后,AJAX发布请求报告失败
  5. android数据持久化存储(2)
  6. 纪中B组模拟赛总结(2020.2.22)
  7. mysql查询问题解答_mysql查询问题
  8. android 开源项目介绍
  9. 斐讯k2路由器刷pandorabox认证哆点Drcom
  10. python装在c盘、怎么换到d盘_怎么把安装在c盘的东西移到d盘_如何把c盘的应用程序移到d盘...
  11. 创新工场李开复:漫延——中国移动互联网的2011年
  12. Paxos算法的一个简单小故事
  13. cortex A73/A53/A57
  14. 升级Android SDK (API24)笔记
  15. python求多叉树任意两点之间的距离
  16. Redis高可用架构
  17. 缓解职场压力和心理疲劳
  18. 自制电脑红外遥控接收器(PC软解码)
  19. 百面机器学习04-降维
  20. Soc-e在FPGA上为任务关键型应用量身定制的IEEE 1588感知以太网交换机

热门文章

  1. 实习日志(总结一些前端知识)
  2. 2019 SUST暑期集训题解(计算几何(二))
  3. 服务器凌晨莫名奇妙自动重启解决方案
  4. 初,中高级宏观经济学区别和联系
  5. Laragon集成环境安装
  6. ad用户如何和计算机名对应,计算机加域和AD里相应对象的问题
  7. 【囧囧笑话集】做一个愉快的少年
  8. 【自控原理要点】第1章 绪论
  9. 保姆级教程:如何搭建一个专属云平台?
  10. hive和hadoop的浅显理解