### 说明:无环链表。这道题也是归并排序的中间步骤。 ### 思路:这道题思路和[倒数第 k 个节点](https://www.kancloud.cn/persuez/algorithm/861500)的思路是一致的,都是用距离是固定的,只不过这道题用一个特别一点的方式求:快指针每次走两步到最后的或倒数第一个节点(节点数为偶数,都是从链头出发),慢指针每次走一步到达的就是中间节点(偶数的话是左节点)。 以下是代码实现: ``` SList* findMiddleNode(SList *pHead) { if (pHead == nullptr) { return nullptr; } SList *slow = pHead, *fast = pHead; while (fast != nullptr && fast->m_next != nullptr) { fast = fast->m_next->m_next; slow = slow->m_next; } return slow; } ```