SListNode * FindMid(SListNode *pFirst)
{
//定义一个快慢指针,两个先一起到第一个结点,然后让快的先走一步,也就是快的走两步,慢的走一步。
SListNode *pSlow=pFirst;
SListNode *pFast=pFirst;
while (1)
{
pSlow = pSlow->pNext;
pFast = pFast->pNext;
if (pFast == NULL)
{
break;
}
pFast = pFast->pNext;
if (pFast == NULL)
{
break;
}
}
return pSlow;
}
遍历一次,找到中间结点