要求

给出单链表的头节点 head ,要求反转链表,并返回反转后的链表。

实现原理

单向链表反转就是将链表的指针方向改变。由于单链表没有指向前一个结点的指针,所以,我们定义一个指向前一个节点的指针pre,用于存储每一个节点的前一个结点;定义一个保存当前节点的指针cur以及下一个节点指针的next。定义好之后,遍历单链表,将next指向cur的下一个节点,将cur的next指向pre(此时链表是断开状态),pre向后移动,cur向后移动,直至遍历到最后一个结点为止。





代码实现


public class LinkedList {public static Node reverse(Node head){//如果链表头为null或链表只有一个节点,无需反转,直接返回if (null == head || null == head.child){return head;}// 当前节点的前一个节点Node pre = null;// 当前节点Node cur = head;// 当前节点的后一个节点Node next = null;while (cur != null){next = cur.child; //next节点指向当前节点的后一个节点cur.child = pre;//当前节点的child指向当前节点的前一个节点,反转的关键,此时链表断开pre = cur;// 当前节点的前一节点向后移动cur = next;// 当前节点向后移动}return pre;}public static class Node<E>{E item;Node child;public Node(E item){this.item = item;}}
}

测试代码


public class LinkedListTest {LinkedList.Node node = null;@Beforepublic void init(){LinkedList.Node node1 = new LinkedList.Node(10);LinkedList.Node node2 = new LinkedList.Node(20);LinkedList.Node node3 = new LinkedList.Node(30);LinkedList.Node node4 = new LinkedList.Node(40);node = node1;node1.child = node2;node2.child = node3;node3.child = node4;}@Testpublic void testReverse(){LinkedList.show(node);System.out.println("----------------------");LinkedList.Node reverseNode =LinkedList.reverse(node);LinkedList.show(reverseNode);}
}

Java单向链表反转相关推荐

  1. 反转单向链表java_Java实现单向链表反转

    本文实例为大家分享了Java实现单向链表反转的具体代码,供大家参考,具体内容如下 1.实现代码 public class LinkedListTest { public static void mai ...

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

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

  3. JAVA单向链表实现

    JAVA单向链表实现 单向链表 链表和数组一样是一种最常用的线性数据结构,两者各有优缺点.数组我们知道是在内存上的一块连续的空间构成,所以其元素访问可以通过下标进行,随机访问速度很快,但数组也有其缺点 ...

  4. 经典算法——单向链表反转

    1. 题目 单向链表反转是一道经典的求职面试笔试或机试题.给定如下如下链表的节点定义: struct LinkNode {int value;LinkNode* next; }; 比如有一个链表是这样 ...

  5. java 单向链表 双向链表_java 单向链表与双向链表的实现

    链表 单向链表 单向链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 这是一种物理结构,不是树那样的逻辑结构.链表和顺序表两种物理结构, ...

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

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

  7. 剑指offter Java单链表反转

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

  8. Java 单向链表模拟

    链表是有序的列表 链表是以节点的方式来存储的,各个节点不一定是连续存储的 分为带头节点的链表和没有头节点的链表 头节点不存放具体数据 单向链表: 其中每一个节点包含一个存储数据的data,一个指向下一 ...

  9. 单向链表反转(倒置)问题

    今天遇到单向链表的反转的问题,于是静下心来好好想了一番. 解题思路如下图: 假设当前创建好的链表如下: 首先让头节点与第一个元素节点断开,但是要注意在断开之前需要用p指针指向第一个元素节点来保存第一个 ...

最新文章

  1. 『DNS隧道工具集合』— iodine
  2. 成为最差开发者的10条建议
  3. CMD下提示“命令不是内部或外部命令”解决方法
  4. java命令主动清空jvm_JVM史上最全实践优化没有之一
  5. C# - 企业框架下的存储过程输出参数
  6. 学编程要从什么开始学起
  7. PHP常用时间函数总结
  8. D-S envidence theory(DS 证据理论)的基本概念和推理过程
  9. sigmoid和tanh激活函数与其导数的绘图详解
  10. 查看电脑卸载mysql是否干净_如何把Mysql卸载干净(亲测有效)
  11. 最新| ClickHouse入门、调优、实战一条龙全解秘籍
  12. 简易cad导出pdf程序源码
  13. 开发本地O2O分销系统有什么优势 O2O电子商务模式有哪些特点?
  14. 毕业论文用尾注添加参考文献
  15. 2021-01-09
  16. [边缘检测算法] Sobel算子及其PC端优化提速20几倍
  17. 【Android】网络小说阅读软件的实现
  18. 箱线图的几种画法-Python
  19. 齐岳定制|Cyclopropene-PEG-Xylan|环丙烯-聚乙二醇-木聚糖
  20. qq飞车手游显示服务器连接失败,QQ飞车手游出现系统错误怎么解决?出现系统错误问题解决方法[多图]...

热门文章

  1. iPad 应用直接在 Mac 上运行?今年还是有可能实现的
  2. 【YOLOv5实现玩手机检测】
  3. http性能测试工具wrk源码学习之开篇
  4. Qt5之 简单的日志记录工具类
  5. 【牛客网】BC23 时间转换
  6. 华三交换机V5版本配置ssh登录
  7. android 杀死进程广播,application 进程被系统杀死后,为何不能接受broadcast?
  8. shmget()函数:
  9. Hi3518ev200:开发环境测试,运行sample/venc抓拍图片
  10. itertools库的使用方法