链表的中间结点

思路:使用两个指针变量,刚开始都位于链表的第 1 个结点,慢指针一次只走 1 步,快指针一次只走 2 步,一个在前,一个在后,同时走。这样当快指针走完的时候,慢指针就来到了链表的中间位置。

代码如下:

struct ListNode {
      int val;
      struct ListNode *next;
};

struct ListNode* middleNode(struct ListNode* head){
    struct ListNode *fast = head;
    struct ListNode *slow = head;
    while( (fast) && (fast->next)){
        slow = slow -> next;
        fast = fast -> next -> next;
    }
    return slow;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容