java中单链表倒转的实现方法

本文记录了一种Java中单链表反转的实现方法,通过详细步骤和代码解析,展示了如何利用节点的next属性逐步倒转单链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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为上述的头对象

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

cur.next指向了n.next:
这里写图片描述

3、执行(3):

这里写图片描述

4、执行(4):

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

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

这里写图片描述

6、第二次执行(3):

这里写图片描述

7、第二次执行(4):

这里写图片描述
cur.next == null 推出循环
以上,实现单链表的倒转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值