链表的回文结构
/* struct ListNode { int val; struct ListNode next; ListNode(int x) : val(x), next(NULL) {} };/ class PalindromeList { public: //找中间节点 ListNode* middleNode(ListNode* head){ ListNode* slow=head; ListNode* fast=head; while(fast&&fast->next) { slow=slow->next; fast=fast->next->next; } return slow; } //逆置链表 ListNode* reverseList(ListNode* head) { ListNode* cur=head; ListNode* prev=NULL; if(head==NULL) { return NULL; } else { ListNode* tmp=cur; while(cur) { tmp=cur->next; cur->next=prev; prev=cur; cur=tmp; } return prev; } } bool chkPalindrome(ListNode* A) { ListNode* mid=middleNode(A); ListNode* rHead=reverseList(mid); while(A&&rHead) { if(A->val==rHead->val) { A=A->next; rHead=rHead->next; } else { return false; } } return true; } };