# [LeetCode]#876. Middle of the Linked List

**Environment: Python 3.8**

**Key technique: List node**

Given a non-empty, singly linked list with head node `head`

, return a middle node of linked list.

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

**Example 1:**

**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.

**Example 2:**

**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.

**Analysis:**

- I am not so good at linked-list structure, so I add linked-list as below.

`class ListNode:`

def __init__(self, val=0, next=None):

self.val = val

self.next = next

input=[1,2,3,4,5]

head=ListNode(1)

head.next=ListNode(2)

head.next.next=ListNode(3)

head.next.next.next=ListNode(4)

head.next.next.next.next=ListNode(5)

2. And I see below data.

3. Find all .next data and find middle number.

Solution:

`class Solution():`

def middleNode(self, head):

A = [head]

while A[-1].next:

A.append(A[-1].next)

return A[int(len(A) / 2)]

**Submissions:**

**Reference:**

https://leetcode.com/problems/middle-of-the-linked-list/solution/