题解 | #链表的回文结构#
链表的回文结构
https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa
/* 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) { if(head == NULL) { return head; } ListNode* n1, *n2, *n3; n1 = NULL; n2 = head; n3 = n2->next; while(n2) { n2->next = n1; n1 = n2; n2 = n3; if(n3 != NULL) n3 = n3->next; } return n1; } bool chkPalindrome(ListNode* A) { ListNode* mid = middleNode(A); ListNode* newmid = reverseList(mid); while(A && newmid) { if(A->val != newmid->val) { return false; } A = A->next; newmid = newmid->next; } return true; } };