java - 反向单链表 - 代码改进

标签 java recursion linked-list

我正在努力提高我的递归技能(或者可能是第一次获得它们:))。为此,我写了一段Java代码来反转单链表,如下:

node head, prev; // head is pointing to the start of the linked list

void reverselist(node current) {
    if (current.next != null) {
        reverselist(current.next);
    }
    if (current.next == null) {
        this.head = current;
        prev = current;
    }
    else {
        prev.next = current;
        current.next = null;
        prev = current;
    }
}

这段代码工作正常,但为了学习,我想避免使用全局变量(节点 prev)进行递归函数内部的操作。那么是否可以重写这个函数来完全避免这种情况呢?欢迎任何其他优化:)

最佳答案

更好的实现应该如下:

public Node reverse(Node current)
{
 if (current== null || current.next==null) return current;
 Node nextItem = current.next;
 current.next = null;
 Node reverseRest = reverse(nextItem);
 nextItem.next = current;
 return reverseRest;
}

关于java - 反向单链表 - 代码改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171697/

相关文章:

java - 构造函数放在哪里?

java - 我的EditText仅由SetText()更新;每第二次尝试

bash - 递归计算特定文件BASH

c - 查找数字位置

c++ - 使用 <algorithm> sort 对自定义链表进行排序

java - 无法使 Spring MVC 工作

java - 泛型代码删除不起作用

java 获取所有可能的变体(正和负)

c++ - 链表 C++ 的节点构造函数中的错误

c++ - 删除仅给定节点的单向链表中间的节点。 C++