//两个栈,先遍历链表将值压入v1中,然后弹出v1栈顶上半部分压入v2中,注意链表节点是奇数个的情况,然后v1,v2比较是否相等
class Solution {
public:
    bool isPail(ListNode* head) {
        if(!head) return true;
        ListNode *cur=head; 
	   //两个栈
        stack<int> v1;
        stack<int> v2;
	   //先遍历链表将值压入v1中
        while(cur)
        {
            v1.push(cur->val);
            cur=cur->next;
        }
	    //弹出v1栈顶上半部分压入v2中
        for(int n=v1.size()/2; n>0; --n)
        {
            v2.push(v1.top());
            v1.pop();
        } 
	   // 注意链表节点是奇数个的情况
        if(v1.size()!=v2.size())
            v1.pop();
	  //然后v1,v2比较是否相等
        while(!v1.empty())
        {
            if(v1.top() != v2.top())
              return false;
            v1.pop();
            v2.pop();
        }
        return true;
    }
};