求链表中倒数第K个节点

2014-11-24 02:57:10 · 作者: · 浏览: 1

1、求链表中倒数第K个节点


[cpp]
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
if(pListHead == NULL || k == 0)
return NULL;

ListNode *pAhead = pListHead;
ListNode *pBehind = NULL;

for(unsigned int i = 0; i < k - 1; ++ i)
{
pAhead = pAhead->m_pNext;
if(pAhead == NULL)
return NULL;
}

pBehind = pListHead;

while(pAhead->m_pNext != NULL)
{
pAhead = pAhead->m_pNext;
pBehind = pBehind->m_pNext;
}

return pBehind;
}

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
if(pListHead == NULL || k == 0)
return NULL;

ListNode *pAhead = pListHead;
ListNode *pBehind = NULL;

for(unsigned int i = 0; i < k - 1; ++ i)
{
pAhead = pAhead->m_pNext;
if(pAhead == NULL)
return NULL;
}

pBehind = pListHead;

while(pAhead->m_pNext != NULL)
{
pAhead = pAhead->m_pNext;
pBehind = pBehind->m_pNext;
}

return pBehind;
}

要注意一些错误处理机制;