判断是否为回文链表

我是采用先反转一整个链表再判断两个链表是否匹配,看不出来啥问题,但还是有错,求解答!
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

// 反转链表
struct ListNode* reverseList(struct ListNode* head) {
    struct ListNode* pre = NULL;
    // 保存下一个节点
    struct ListNode* temp = head;
    while(head) {
        // 保存下一个节点的位置
        temp = head->next;
        // 反转链表
        head->next = pre;
        // 更新节点
        pre = head;
        head = temp;
    }
    return pre;
}

bool isPalindrome(struct ListNode* head){
    // 反转后的链表
    struct ListNode* newList = reverseList(head);
    // 比较两个链表的值
    while(head && newList) {
        if(head->val != newList->val) {
            return false;
        }
        head = head->next;
        newList = newList->next;
    }
    return true;
}
全部评论
你把链表给反转了,head还是你以为的那个head吗
点赞 回复 分享
发布于 10-10 00:01 广东

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务