找单项链表中的中间节点

struct ListNode {
    int val;
    struct ListNode *next;
};
ListNode* fast = head;
ListNode* slow = head;
while(fast->next && fast->next->next){
    fast = fast->next->next;
    slow = slow->next;
}

用这种方法找单项链表的中间节点,如果链表为奇数个节点,那么找到的节点就是中间的节点。对于偶数个节点的链表,找到的节点是中间位置节点中的前一个节点