/** * 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; }