Функция обратного связанного списка не работает в Java - PullRequest
0 голосов
/ 21 октября 2019

Я написал собственный метод для печати реверса связанного списка с помощью рекурсии, но он дает некоторый случайный результат.

открытый класс Node {

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();

1 Ответ

1 голос
/ 21 октября 2019

Ваше заявление while должно быть утверждением if. Рекурсия напечатает обратную сторону списка, затем обратную минус последний элемент, затем обратную минус последние два ...

Попробуйте вместо этого:

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