思路:
构造一个栈,第一步,从头遍历链表,把值存进栈里面(顺便引入一个i值,记录有几个数,可以用来找出第几个是中间值)。第二步,只需遍历一半栈和链表,for循环挨个对比,如果不一样则返回false,最后在循环外面返回ture!搞定!

public class Solution { //
    public boolean isPail (ListNode head) {

        Stack<Integer> s= new Stack<>();
        int i=0;

        ListNode tmp =head;//需要一个辅助指针
        while(head!=null){//从头开始入栈

            s.push(head.val);
            i++;
            head=head.next;

        }
        int mid=i/2;

        for(int j=0; j < mid; j++){//只需遍历一半

            if(tmp.val!=s.pop()){
                return false;
            }
            tmp = tmp.next;
        }
        return true;
    }
}