117.info
人生若只如初见

java如何实现反转列表

可以使用递归或迭代的方式来实现反转链表。

递归方式:

class ListNode {
    int val;
    ListNode next;
    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode reverseList(ListNode head) {
        // 如果链表为空或只有一个节点,无需反转,直接返回原链表头节点
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode newHead = reverseList(head.next); // 反转以head.next为头节点的子链表
        head.next.next = head; // 将head节点连接到反转后的子链表的尾部
        head.next = null; // 将head节点的next置为null
        
        return newHead; // 返回新的头节点
    }
}

迭代方式:

class ListNode {
    int val;
    ListNode next;
    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode reverseList(ListNode head) {
        // 如果链表为空或只有一个节点,无需反转,直接返回原链表头节点
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode prev = null; // 当前节点的前一个节点
        ListNode curr = head; // 当前节点
        
        while (curr != null) {
            ListNode next = curr.next; // 当前节点的下一个节点
            curr.next = prev; // 反转指针指向前一个节点
            prev = curr; // 更新当前节点的前一个节点
            curr = next; // 更新当前节点为下一个节点
        }
        
        return prev; // 返回新的头节点
    }
}

以上是两种常见的反转链表的实现方式。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe265AzsLBQBWDFY.html

推荐文章

  • java怎么获取当前文件路径

    在Java中,可以使用System.getProperty("user.dir")来获取当前文件的路径。这会返回一个字符串,表示当前的工作目录。另外,可以使用File类来获取当前文件的路径...

  • java接口怎么封装成api

    要封装一个Java接口成为API,需要以下步骤:1. 定义接口:首先,定义一个接口来定义API的功能和方法。接口应该包含需要暴露给外部使用的方法和常量。```javapubl...

  • Java怎么实现qq登录功能

    要实现qq登录功能,可以使用qq登录的开放平台提供的API。下面是一种实现的方法: 注册成为qq开放平台的开发者,获取App ID和App Key。 在Java项目中引入相应的HT...

  • java字符串全排列怎么实现

    可以使用递归的方法来实现字符串的全排列。
    具体步骤如下: 定义一个递归函数,传入一个字符串和两个索引参数,分别表示当前排列的起始位置和结束位置。

  • java怎么将list数据反转

    在Java中,可以使用Collections类的reverse()方法来反转List中的数据。以下是一个示例代码:
    import java.util.ArrayList;
    import java.util.Collecti...

  • php怎么获取当前用户登录id

    在 PHP 中,可以使用 $_SESSION 变量来存储和获取用户登录信息。首先,在用户登录成功时,将用户的 id 存储到 $_SESSION 变量中:
    // 用户登录成功后,获取...

  • Streamline安装与使用的方法是什么

    要安装和使用Streamline,您可以按照以下步骤进行操作: 下载安装Node.js:Streamline是一个基于Node.js的工具,所以首先需要在您的计算机上安装Node.js。您可以...

  • css border-bottom属性的作用是什么

    CSS border-bottom属性用于设置元素的下边框样式、宽度和颜色。它可以单独设置下边框的样式、宽度和颜色,或者通过简写形式设置所有边框的样式、宽度和颜色。