//两个栈,先遍历链表将值压入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;
}
};