判断链表的回文结构


#define Node ListNode

class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head
     * @return bool布尔型
     */
    bool isPail(ListNode* head) {
        if(head==NULL ||head->next ==NULL) return true;
        // write code here
        ListNode*first=head,*last=head;
        while(first && first->next) first=first->next->next,last=last->next;
        stack<Node*>s;
        while(last) {
            s.push(last);
            last = last->next;
        }
        last = head;
        while(s.size() && last->val == s.top()->val) last = last->next,s.pop();
        return s.empty();
        
    }
};

原文地址:https://www.cnblogs.com/lyr-2000/p/14322388.html