我无法解决此代码问题。我需要使用Java中的递归方法来反向链接列表。我似乎无法弄清楚,我已经尽力了。我非常感谢您的帮助。
// Java program for reversing the linked list
class MyLinkedList {
static Node head;
static class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
/* Function to reverse the linked list */
Node reverse(Node node) {
add content
node = prev;
return node;
}
// prints content of double linked list
void printList(Node node) {
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
}
public static void main(String[] args) {
MyLinkedList list = new MyLinkedList();
add content }
}
答案 0 :(得分:0)
应该是“ ”而不是“添加内容”:
(A)->(B),其中A是 当前 节点,B是 next 节点。
答案 1 :(得分:0)
在尝试使用递归解决此问题之前,请先想象一下。
给出(1)->(2)->(3)->
初始化3个变量prev = null; cur = 1; next = 2;
现在要扭转这种情况,从当前节点开始,它必须指向前一个节点,但是这样做会使我们失去1和2之间的链接。要保持链接设置为next =2。现在,当前1可以指向先前的值,即cur.next = prev。
所以现在我们有了<-(1)(2)->(3)->
然后转到下一个迭代,您只需更新prev = cur和cur = next。
通过重复执行此操作直到您到达null为止,链表以这种方式更新。
<-(1)<-(2)(3)->
<-(1)<-(2)<-(3)
因此,可以使用类似while的循环来完成
Node prev = null;
Node cur = node;
Node next;
while (cur != null) {
next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
return prev;
现在要使用递归来执行此操作,您只需要具有3个参数,即prev,cur和next。定义您的基本情况(函数达到空值时应执行的操作)。然后在while循环内执行4行代码,然后调用递归函数。