PSListNode FindMidNode(PSListNode pHead)
{
if (NULL == pHead)
{
return NULL;
}
else
{
//快慢指针,快指针一次循环走两步,慢指针一次循环走一步
PSListNode pSlow = pHead;
PSListNode pFast = pHead;
//注意结束条件得加上NULL != pFast->pNextNode,否则当NULL == pFast->pNextNode时,进入循环,
//执行pFast = pFast->pNextNode->pNextNode时会崩溃
while ((NULL != pFast) && (NULL != pFast->pNextNode))
{
pSlow = pSlow->pNextNode;
pFast = pFast->pNextNode->pNextNode;
}
return pSlow;
}
}
查找单链表的中间节点,要求只能遍历一次链表(C语言)
最新推荐文章于 2022-05-17 10:57:37 发布