import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class PalindromeList {
public boolean chkPalindrome(ListNode A) {
// write code here
ListNode f=A,s=A;
while(f!=null&&f.next!=null){
s=s.next;
f=f.next.next;
}
//f是中间节点。(若为偶数,则为中间节点的下一个节点)
ListNode pre=s,cur=s.next,nex=cur;
while(cur!=null){
nex=cur.next;
cur.next=pre;
pre=cur;
cur=nex;
}
//pre是反转后的链表的头节点
s.next=null;
ListNode p1=A,p2=pre;
while(p1!=null&&p2!=null){
if(p1.val!=p2.val){
return false;
}
p1=p1.next;
p2=p2.next;
}
return true;
}
}