思路 用快慢指针,原理很简单,一个指针slow,每次往前移一格,另一个指针fast,每次往后移两格,这样的速度不同可以保证每次slow都fast的一半的地方,直到fast为NULL,此时slow为中间节点 代码 ListNode* slow = head; ListNode* fast = head->next; while (fast != NULL && fast->next!=NULL) { fast = fast->next->next; slow = slow->next; }