/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool isPail(struct ListNode* head ) {
// write code here
int Vaule[100000] = {0};
struct ListNode* Cur = head;
int i = 0;
while (Cur) { // 将链表节点的值记录在数组中;
Vaule[i] = Cur->val;
Cur = Cur->next;
i++;
}
Cur = head;
struct ListNode* Pre = NULL;
struct ListNode* Next = head->next;
// 将链表逆序;
while (Cur) {
Cur->next = Pre;
Pre = Cur;
Cur = Next;
Next = Next->next;
}
// 此时 Pre 为链表逆序后的头指针
int j = 0;
while(Pre) // 逆序检查节点值是否匹配
{
if (Vaule[j] != Pre->val) {
return false;
}
j++;
Pre = Pre->next;
}
return true;
}