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

public class Node {
    
    private Object data;//数据域
    private Node next;//指针域
 
    public Node(Object data){
        this.data = data;
    }
 
    public Node(Object data,Node next){
        this.data = data;
        this.next = next;
    }
 
    public Object getData() {
        return data;
    }
 
    public void setData(Object data) {
        this.data = data;
    }
 
    public Node getNext() {
        return next;
    }
 
    public void setNext(Node next) {
        this.next = next;
    }
 
}
       单链表的反转操作是面试java开发中常考的题目,笔者面试时曾被这道题虐过qaq,之后痛定思痛,研究了一番之后,写出来与大家分享。

先说下思路:所谓的单链表反转,就是把每个节点的指针域由原来的指向下一个节点变为指向其前一个节点。但由于单链表没有指向前一个节点的指针域,因此我们需要增加一个指向前一个节点的指针pre,用于存储每一个节点的前一个节点。此外,还需要定义一个保存当前节点的指针cur,以及下一个节点的next。定义好这三个指针后,遍历单链表,将当前节点的指针域指向前一个节点,之后将定义三个指针往后移动,直至遍历到最后一个节点停止。

OK,说完思路,直接上代码。

public static Node reverseListNode(Node head){
        //单链表为空或只有一个节点,直接返回原单链表
        if (head == null || head.getNext() == null){
            return head;
        }
        //前一个节点指针
        Node preNode = null;
        //当前节点指针
        Node curNode = head;
        //下一个节点指针
        Node nextNode = null;
 
        while (curNode != null){
            nextNode = curNode.getNext();//nextNode 指向下一个节点
            curNode.setNext(preNode);//将当前节点next域指向前一个节点
            preNode = curNode;//preNode 指针向后移动
            curNode = nextNode;//curNode指针向后移动
        }
 
        return preNode;
    }

————————————————
版权声明:本文为CSDN博主「WeekenLin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lwkrsa/article/details/82015364

Java实现单链表反转操作相关推荐

  1. java实现单链表常见操作,java面试题,java初级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 一. ...

  2. java实现单链表常见操作

    一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...

  3. 剑指offter Java单链表反转

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

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

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

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

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

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

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

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

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

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

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

  9. 【编程2】单链表+单链表反转(LeetCode. 206)

    文章目录 一.链表 二.单链表 1.基本概念 (1)单链表 (2)头指针--必有元素 (3)头结点--非必需元素 (4)尾结点 2.查找操作 3.插入操作 4.删除操作 三.设计思想-- 时间 < ...

最新文章

  1. 数据回归分析和拟合的Matlab实现
  2. element ui 中 el-menu 如何添加链接router-link标签
  3. C++总结笔记(一)—— 基础知识汇总
  4. android resolvesize方法,Android 自定义View中onMeasure()中使用resolveSize()是什么意思?
  5. 如何玩转 WebGL 并行计算
  6. jquery插件合集之图片裁剪
  7. python成绩区间曲线图_Python重现论文图表之【包含置信区间的折线柱状图】
  8. 【pytorch】常见的坑汇总
  9. iframe:获取iframe中的元素
  10. 修改Win7的默认文件夹排列方式
  11. vcenter客户端控制虚拟服务器报错:“VMRC 控制台的连接已断开”
  12. 一般论文发表流程有哪些
  13. C语言小熊时钟实验报告,用VC6.0编写一个小熊时钟(求代码)
  14. 分段函数的期望和方差_题组25随机变量的分布列、期望与方差、正态分布
  15. 盘古开源:分布式数据存储,实现更多人参与的下一代互联网新基建
  16. PTA-L1-007 念数字 (C语言)
  17. Django账号登陆之退出登录(logout()方法介绍、logout()方法使用)
  18. win10彻底关闭自动更新方法步骤:
  19. Qtum量子链周报(10月22日-10月28日)
  20. Extjs后台管理系统模板

热门文章

  1. 怎么加快计算机运行速度,怎么加快计算机运行速度?
  2. MiniGUI编程之Helloworld(一)
  3. bigemap中下载边界_高清卫星地图:是可以看到人的地图,附下载方法
  4. webmagic 获取文本_学习使用Java的webmagic框架爬取网页内容
  5. pdf转图片 java_有将pdf文件转图片的格式方法吗?
  6. python怎么用matplotlib画,用matplotlib在python中绘制OHLC图
  7. react前端显示图片_在react里怎么引用图片
  8. 学计算机申请书100字,加入学生会申请书100字范文
  9. matlab函数参数命令,matlab函数文件中的输出参数如何不在命令窗口显示
  10. staruml顺序图生成协作图_一个工具箱 之 南丁格尔玫瑰图生成器