LeetCode 876.链表的中间节点

LeetCode 876.链表的中间节点

题目:

LeetCode 876.链表的中间节点_第1张图片

思路:

该题利用快慢指针就很容易做出来,这题是我们对快慢的初步认识,只需要定义两个指针fast,slow,让fast走两步,slow走一步,当fast走或者fast的next走到NULL时,此时slow一定在中间节点

LeetCode 876.链表的中间节点_第2张图片 LeetCode 876.链表的中间节点_第3张图片

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* middleNode(struct ListNode* head){
        struct ListNode* fast,* slow;
    	fast = slow = head;
    	while(fast && fast->next) //当fast或者fast->next为空就停止
        {
            slow = slow->next;
            fast = fast->next->next;
        }
    return slow;
}

你可能感兴趣的:(Leetcode,牛客题型,c语言,leetcode,链表)