Como verificar se uma lista vinculada é um palíndromo ou não em Java?

Eu escrevi um código para verificar se uma lista vinculada individualmente é um palíndromo. E eu dei dois passos:

1º. inverta a lista vinculada original.

2nd. Verifique se a lista vinculada original e revertida tem o mesmo elemento.

    public static Boolean isPalindrome(Node input){
        Node reversed= reverse(input);
        while (input!=null){
            if(input.item!=reversed.item)
                return false;
            input=input.next;
            reversed=reversed.next;
            }
            return true;
    }
    static Node head;
    public static Node reverse(Node input){
        if(input==null || input.next==null){
            head=input;
            return input;
        }
        else{
            reverse(input.next);
            input.next.next=input;
            input.next=null;
            return head;
        }
    }

Este programa funciona. Mas eu pensei que, ao executar o método reverso, uma vez que a cabeça da lista vinculada original é passada, a lista vinculada original também pode ser alterada; portanto, o isPalindrome também deve retornar verdadeiro, certo? Estou certo ou você pode me dizer se eu entendi mal algum conceito? obrigado

Esta é a função principal e como eu uso esse código:

public static void main(String [] args){
    Node a=new Node(9);
    Node b=new Node(8);
    Node c=new Node(7);
    Node d=new Node(6);
    a.next=b;
    b.next=c;
    c.next=d;
    //d.next=c;
    Boolean tf=isPalindrome(a);
    if (tf)
        System.out.println("Is Palindrome!");
    else
        System.out.println("Not Palindrome");
}

questionAnswers(1)

yourAnswerToTheQuestion