这个问题似乎有很多答案,但没有一个可以帮助我的答案。我需要检查单链表是否是回文,并在泛型类中为它编写一个方法,但不知怎的,我错过了一个点,因为main抛出异常。我正在使用算法,您将列表分成两半并检查它们是否相同。这是我的计划。提前致谢。 方法是:
public boolean isPalindrome() {
Node<T> slow_ptr = head;
Node<T> fast_ptr = head;
Node<T> mid_node = null;
while (true) {
fast_ptr = fast_ptr.next.next;
if (fast_ptr.next == null) {
mid_node = slow_ptr.next.next;
break;
}
if (fast_ptr == null) { //in eclipse it says here Dead code?
mid_node = slow_ptr.next;
break;
}
slow_ptr = slow_ptr.next;
}
while (head != null && mid_node != null) {
if (head != mid_node)
return false;
head = head.next;
mid_node = mid_node.next;
}
return true;
}
主要是这个:
import java.util.Scanner;
public class Palindrome {
public static void main( String[] args ) {
Scanner in = new Scanner(System.in);
LinkedList<Integer> list = new LinkedList<>();
int n = in.nextInt();
for (int i = 0; i < n; i++) {
int elem = in.nextInt();
list.add(elem);
}
boolean is_pal = list.isPalindrome();
if (is_pal) System.out.println("Palindrome");
else System.out.println("Not a palindrom");
}
}