# C#LeetCode刷题之#876-链表的中间结点（Middle of the Linked List）

If there are two middle nodes, return the second middle node.

Input: [1,2,3,4,5]

Output: Node 3 from this list (Serialization: [3,4,5])

The returned node has value 3.  (The judge’s serialization of this node is [3,4,5]).Note that we returned a ListNode object ans, such that:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Input: [1,2,3,4,5,6]

Output: Node 4 from this list (Serialization: [4,5,6])

Since the list has two middle nodes with values 3 and 4, we return the second one.

Note:

The number of nodes in the given list will be between 1 and 100.

```public class Program {

public static void Main(string[] args) {
var head = new ListNode(1) {
next = new ListNode(2) {
next = new ListNode(3) {
next = new ListNode(4)
}
}
};

ShowArray(res);

ShowArray(res);

}

private static void ShowArray(ListNode list) {
var node = list;
while(node != null) {
Console.Write(\$"{node.val} ");
node = node.next;
}
Console.WriteLine();
}

private static ListNode MiddleNode(ListNode head) {
//暴力解法
var count = 0;
while(node != null) {
count++;
node = node.next;
}
var mid = count / 2;
var index = 0;
while(node != null && index++ < mid) {
node = node.next;
}
return node;
}

private static ListNode MiddleNode2(ListNode head) {
//快慢双指针
while(fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
return slow;
}

public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}

}```

```3 4
3 4```

(2)