/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class Palindrome { public: bool isPalindrome(ListNode* pHead) { // find the middle point, [h, p) is the first (smaller) part if (not pHead or not pHead->next) return true; ListNode *p, *q; p = q = pH...