方法,如果链表是泛型类中的回文

时间:2018-01-26 15:56:13

标签: java list linked-list

这个问题似乎有很多答案,但没有一个可以帮助我的答案。我需要检查单链表是否是回文,并在泛型类中为它编写一个方法,但不知怎的,我错过了一个点,因为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");
    }
}

0 个答案:

没有答案