查找单链表的中点

给定一个单链表如何高效的找到链表的中点,要求算法复杂度O(N),如果读者遇到过这样的问题,那么这个问题就迎刃而解了,验证链表是否有环的问题,使用快慢指针变量链表,同理中点问题也可以使用快慢指针实现,慢指针一次移动一个节点,快节点一次移动两个节点,快指针到达终点时,慢指针指向中点。

LinkNode *FindMid(LinkNode *p){
        if(p == NULL){
                return NULL;
        }
        LinkNode *fast = p;
        LinkNode *slow = p;
        while(fast && fast->next){
                fast = fast->next->next;
                slow = slow->next;
        }
        return slow;
}
    原文作者:desionwang
    原文地址: https://blog.csdn.net/wdxin1322/article/details/9793731
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞