您的位置:首页 > 职场人生

剑指offer--面试题15--相关

2013-08-12 12:04 274 查看
感受:清晰的思路是最重要的!!!

题目:求链表中间节点

ListNode* MidNodeInList(ListNode* pHead)
{
if(pHead == NULL)
return NULL;

ListNode* pNode1 = pHead;
ListNode* pNode2 = pHead;

unsigned int step = 1;
while(pNode2->m_pNext != NULL)
{
pNode2 = pNode2->m_pNext;
step++;
if((step & 0x1) == 1)
pNode2 = pNode2->m_pNext;
}

return pNode2;
}


依然两个指针进行一次遍历即可。。。:一个向前走两步,另一个向前走一步

针对链表问题,若一个指针的遍历无法解决问题,则可以尝试用两个指针解决,基本规则为:让其中一个指针遍历的快些,或者先向前运动k步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: