Wie überprüfe ich, ob eine verknüpfte Liste ein Palindrom ist oder nicht in Java?

Ich habe einen Code geschrieben, um zu überprüfen, ob eine einzeln verknüpfte Liste ein Palindrom ist. Und ich habe zwei Schritte gemacht:

1. kehre die ursprüngliche verknüpfte Liste um.

2nd. Überprüfen Sie, ob die ursprüngliche und die umgekehrte verknüpfte Liste dasselbe Element enthalten.

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

Dieses Programm funktioniert. Aber ich dachte, wenn ich die umgekehrte Methode ausführe, wird der Kopf der ursprünglichen verknüpften Liste übergeben, so dass sich auch die ursprüngliche verknüpfte Liste ändern könnte, sodass auch das isPalindrome true zurückgeben sollte, oder? Habe ich recht oder kannst du mir sagen, ob ich ein Konzept missverstanden habe? Vielen Dan

Dies ist die Hauptfunktion und wie ich diesen Code benutze:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage