/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool isPail(struct ListNode* head ) {
//思路
//将链表逆序创建后与原链表作对比,全部相同则是回文数组
struct ListNode* headTmp = head;
struct ListNode* newListNode = NULL;
struct ListNode* nodeTmp = NULL;
struct ListNode listTmp = { .next = NULL };
if (head == NULL || head->next == NULL) {
return true;
}
//创建逆序后的链表
while (headTmp) {
nodeTmp = (struct ListNode*)malloc(sizeof(struct ListNode));
nodeTmp->val = headTmp->val;
nodeTmp->next = listTmp.next;
listTmp.next = nodeTmp;
headTmp = headTmp->next;
}
//回到头部
headTmp = head;
newListNode = listTmp.next;
//比较两个链表
while (headTmp) {
if (headTmp->val != newListNode->val) {
return false;
}
headTmp = headTmp->next;
newListNode = newListNode->next;
}
return true;
}