117.info
人生若只如初见

怎么用java递归实现单链表反转

使用递归来反转单链表需要使用两个指针,一个用来指向当前节点,另一个用来指向当前节点的前一个节点。递归的终止条件是当前节点为null,即已经反转到链表的尾部。

以下是使用递归实现单链表反转的Java代码:

class Node {
    int data;
    Node next;

    Node(int data) {
        this.data = https://www.yisu.com/ask/data;"hljs">int data) {
        Node newNode = new Node(data);

        if (head == null) {
            head = newNode;
        } else {
            Node currentNode = head;
            while (currentNode.next != null) {
                currentNode = currentNode.next;
            }
            currentNode.next = newNode;
        }
    }

    // 打印链表
    void printList(Node node) {
        while (node != null) {
            System.out.print(node.data + " ");
            node = node.next;
        }
    }

    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.insert(1);
        list.insert(2);
        list.insert(3);
        list.insert(4);

        System.out.println("原始链表:");
        list.printList(list.head);

        // 反转链表
        list.head = list.reverse(list.head, null);

        System.out.println("\n反转后的链表:");
        list.printList(list.head);
    }
}

输出结果为:

原始链表: 1 2 3 4 反转后的链表: 4 3 2 1

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

推荐文章

  • java中异常类会影响性能吗

    在Java中,异常类本身不会对性能产生显著影响。异常处理机制是为了在程序运行时处理错误或异常情况,而不是为了优化性能。然而,在使用异常时,需要注意以下几点...

  • java中异常类如何避免

    在Java中,避免异常的最好方法是编写健壮的代码并遵循一些最佳实践。以下是一些建议: 预期和处理异常:使用try-catch语句来捕获和处理可能发生的异常。确保处理...

  • java中异常类有哪些常见类型

    Java中的异常类主要分为两大类:受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。以下是具体的异常类型:
    受检异常(Checked Except...

  • java中异常类怎么捕获

    在Java中,我们使用try-catch语句来捕获异常。当程序执行过程中遇到异常时,Java运行时系统会抛出一个异常对象。你可以使用try块来包含可能引发异常的代码,然后...

  • docker怎么进入容器修改文件

    要进入Docker容器并修改文件,可以按照以下步骤操作: 使用docker ps命令获取正在运行的容器的列表,并找到要进入的容器的ID或名称。 运行以下命令进入容器:

  • linux的export命令有什么作用

    在Linux操作系统中,export命令用于设置环境变量。环境变量是一些系统级的变量,可以在用户会话期间被访问和使用。export命令的作用如下: 设置环境变量:使用ex...

  • seekp()和seekg()函数简单的应用

    seekp()和seekg()函数是C++中的流定位函数,用于在流中定位读写位置。
    seekp()函数用于定位输出流的写入位置,seekg()函数用于定位输入流的读取位置。

  • ubuntu vsftpd中上传文件报550的错误

    在Ubuntu vsftpd中上传文件报550错误通常表示权限问题。以下是一些常见的解决方法:1. 检查上传目录的权限:确保已经为上传目录设置了正确的权限。可以使用以下命...