java实现单链表倒转的方法

作者:fb0122 时间:2023-04-04 04:44:01 

java中有关单链表反转的方法有很多种,这里记录一种并附上详细步骤:

代码如下

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) { 
        ListNode pre;
        ListNode temp;
        pre = head; // 前驱节点
        ListNode cur = head.next //当前节点

        while(cur != null && cur.next != null){
            temp = cur.next;    //(1)
            cur.next = pre;        //(2)
            pre = cur;     //(3)
            cur = temp;          //(4)

        }
        head.next = null //原头节点,反转后尾节点
        return pre;   //原尾节点  反转后头节点
    }
}

主要的操作是在while循环中,下面画图解释一下是如何实现单链表倒转的:
首先java中没有指针的概念,但是可以看到ListNode中的next属性其实就代表指向下一个节点的“指针”,因此可以这样来理解:

1、原单链表:

假设单链表有三个元素[1,2,3],0为上述的头对象

java实现单链表倒转的方法

2、执行(1)、(2)后:

cur.next指向了n.next:

java实现单链表倒转的方法

3、执行(3):

java实现单链表倒转的方法

4、执行(4):

java实现单链表倒转的方法

第一次循环结束,第一次循环后的单链表如上图所示。
cur != null && cur.next != null,因此执行第二次循环:

5、第二次执行(1),(2):

java实现单链表倒转的方法

6、第二次执行(3):

java实现单链表倒转的方法

7、第二次执行(4):

java实现单链表倒转的方法

cur.next == null 推出循环
以上,实现单链表的倒转。

来源:https://blog.csdn.net/qq_26033289/article/details/51804710

标签:java,单链表,倒转
0
投稿

猜你喜欢

  • 详解Kotlin Android开发中的环境配置

    2022-06-25 10:42:17
  • java模拟TCP通信实现客户端上传文件到服务器端

    2023-11-26 10:14:49
  • 无法从 int? 转换为 int 运行时出现错误

    2022-01-02 08:26:11
  • Java 数据结构与算法系列精讲之二叉堆

    2022-05-14 06:31:15
  • Unity实现换装系统

    2021-08-11 15:27:15
  • 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题

    2021-08-06 20:52:42
  • java输入数字,输出倒序的实例

    2023-06-20 01:59:44
  • Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    2023-11-25 12:14:40
  • Spring Boot静态资源路径的配置与修改详解

    2022-09-15 19:27:08
  • Android实现文件上传和下载倒计时功能的圆形进度条

    2023-12-08 16:45:35
  • Android TabWidget底部显示效果

    2022-08-05 10:54:40
  • Android实现背景可滑动登录界面 (不压缩背景弹出键盘)

    2023-11-14 11:09:07
  • C++如何通过ostringstream实现任意类型转string

    2022-06-27 16:23:06
  • SpringCloud入门实验环境搭建

    2022-11-17 10:21:14
  • Java Swing实现窗体添加背景图片的2种方法详解

    2021-10-26 19:01:18
  • Android 文件存储系统原理

    2021-12-24 05:10:57
  • Android实现本地Service方法控制音乐播放

    2021-12-16 07:22:31
  • Android实现加载圈

    2023-03-27 16:44:34
  • Java 使用 HttpClient 发送 GET请求和 POST请求

    2023-07-23 07:56:13
  • android自由改变Dialog窗口位置的方法

    2021-09-13 04:19:04
  • asp之家 软件编程 m.aspxhome.com