/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ #include <cstdio> class PalindromeList { public: ListNode* overtip(ListNode* A) { ListNode* newnode=(ListNode*)malloc(sizeof(ListNode)); newnode=nullptr; ListNode* cur=A; ListNode* Stc=A; while(cur!=nullptr) { cur=Stc->next; Stc->next=newnode; newnode=Stc; Stc=cur; } return newnode; } ListNode* overmid(ListNode* A) { struct ListNode* slow,*fast; slow=fast=A; while(fast && fast->next )//奇数偶数情况,偶数fast不会出链表,而奇数就会出链表 { fast=fast->next->next; slow=slow->next; } return slow; } bool chkPalindrome(ListNode* A) { // write code here ListNode* mid=overmid(A); ListNode* newnode=overtip(mid); while(A && newnode) { if(A->val!=newnode->val) return false; A=A->next; newnode=newnode->next; } return true; } };