求链表的中间节点,如果链表中节点总数为奇数,返回中间节点;如果节点为偶数,返回返回中间两个节点的任意一个。
思路:我们可以定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步。当走的快的指针走到链表末尾时,走的
struct ListNode { int val; ListNode *next; }; ListNode* FindIntermediateNode(ListNode* pHead) { if (pHead == NULL) return NULL; ListNode* pFast = pHead; ListNode* pSlow = pHead; while (pFast != NULL && pFast->next != NULL) { pFast = pFast->next->next; pSlow = pSlow->next; } return pSlow; }