Как проверить, является ли связанный список палиндромом или нет в Java?

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

Первый. отменить исходный связанный список.

Второй. Проверьте, имеют ли исходный и перевернутый связанный список один и тот же элемент.

    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;
        }
    }

Эта программа работает. Но я подумал, что при выполнении обратного метода, так как передается заголовок исходного связанного списка, поэтому исходный связанный список может также измениться, поэтому isPalindrome также должен вернуть true, верно? Я прав или вы можете сказать мне, если я неправильно понял какую-либо концепцию? Спасибо

Это основная функция и как я использую этот код:

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");
}