/**
请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* pHead,
请返回一个bool,代表链表是否为回文。
**/
#include<iostream>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Palindrome {
public:
bool isPalindrome(ListNode* pHead) {
// write code here
// 第一遍遍历链表,得到链表的长度
ListNode *p1,*p2;
p1=pHead;
p2=pHead;
int length=0;
while(p1){
length+=1;
p1=p1->next;
}
int value[length];
for(int i=0;i<length;i++){
value[i]=p2->val;
p2=p2->next;
}
for(int j=0;j<int(length/2);j++){
if(value[j]!=value[length-j-1]){
return false;
}
}
return true;
}
};
int main(){
int a[5]={1,2,3,2,3};
ListNode *pHead,*p;
pHead=new ListNode(0);
p=pHead;
for(int i=0;i<5;i++){
ListNode *new_node=new ListNode(a[i]);
p->next=new_node;
p=p->next;
}
Palindrome sol;
bool result;
result=sol.isPalindrome(pHead->next);
cout<<result<<endl;
return 0;
}