struct ListNode
{
int val;
ListNode *next;
ListNode(int x):val(x),next(NULL){}
};
bool isPalindrome(ListNode *head)
{
ListNode *slow=head;
ListNode *fast=head;
stack<int> st;
while(fast!=NULL&&fast->next!=NULL)
{
st.push(slow->val);
slow=slow->next;
fast=fast=fast->next->next;
}
if(fast!=NULL)
slow=slow->next;
while(slow!=NULL)
{
int value=st.top();
st.pop();
if(slow->val!=value)
return false;
slow=slow->next;
}
return true;
}
{
int val;
ListNode *next;
ListNode(int x):val(x),next(NULL){}
};
bool isPalindrome(ListNode *head)
{
ListNode *slow=head;
ListNode *fast=head;
stack<int> st;
while(fast!=NULL&&fast->next!=NULL)
{
st.push(slow->val);
slow=slow->next;
fast=fast=fast->next->next;
}
if(fast!=NULL)
slow=slow->next;
while(slow!=NULL)
{
int value=st.top();
st.pop();
if(slow->val!=value)
return false;
slow=slow->next;
}
return true;
}