我正在努力提高我的递归技能(或者可能是第一次获得它们:))。为此,我写了一段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/