Как проверить, является ли связанный список палиндромом или нет в 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");
}