首页 > 解决方案 > 链表反向功能在java中不起作用

问题描述

我编写了一个自定义方法来使用递归打印链表的反向,但它给出了一些随机结果。

公共类节点{

public int data;
Node next;

public Node(int data) {
    super();
    this.data = data;
}

public class NodeImpl {
       public void reverse() {

    Node n = head;
    rev(n);


}

private void rev(Node n) {
    while(n.next != null) {
        n = n.next;
        rev(n);
        System.out.println(n.data);
    }


}

} }

在主班

nodeImpl.insert(3);
nodeImpl.insert(5);
        nodeImpl.insert(7);
        nodeImpl.insert(3);

nodeImpl.reverse();

标签: javarecursion

解决方案


你的while陈述应该是一个if陈述。递归将打印列表的反向,然后反向减去最后一个元素,然后反向减去最后两个......

试试这个:

private void rev(Node n) {
    if(n.next != null) {
        rev(n.next);
    }
    System.out.println(n.data);
}

推荐阅读