题解 | #判断一个链表是否为回文结构#

判断一个链表是否为回文结构

https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 the head
 * @return bool布尔型
 */
bool isPail(struct ListNode* head ) {
    // write code here
    typedef struct ListNode Node;
    Node* fast=head;
    Node* slow=head;
    Node* next=NULL;
    if(head==NULL||head->next==NULL){
        return true;
    }
    while(fast&&fast->next){
        fast=fast->next->next;
        slow=slow->next;
    }//使slow到达链表的中部
    fast=slow->next;//fast达到中部靠后的节点
    slow->next=NULL;//使后半边的链表独立出来
    while(fast){
        next=fast->next;
        fast->next=slow;
        slow=fast;
        fast=next;
    }//翻转后半边的链表
    fast=head;//使fast回到链表的开头节点
    while(slow&&fast){
        if(slow->val!=fast->val){
            return false;
        }
        fast=fast->next;
        slow=slow->next;
    }//检验是否为回文序列
    return true;
}

全部评论

相关推荐

抓蛙得要春天:别想那么多,找得到再说,有面试再说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务