题目描述
请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。
测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false
生成一个栈和队列,再取值比较。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Palindrome {
public:
bool isPalindrome(ListNode* pHead) {
// write code here
stack<int> S;
queue<int> Q;
int number = 0;
while(pHead != NULL)
{
S.push(pHead->val);
Q.push(pHead->val);
pHead->pHead->next;
number++;
}
//作比较
for(int i = 0; i < number; i++)
{
if(Q.front() == S.top())
{
S.pop();
Q.pop();
}
else
{
return false;
}
}
return true;
}
};