您的位置:首页 > Web前端

《剑指offer》——寻找链表中倒数第k个结点

2015-12-29 19:07 274 查看
struct ListNode
{
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL){}
};

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
if(pListHead == NULL || k <= 0)//链表为空或k值无意义
return NULL;
ListNode *pFirst, *pSecond;
pFirst = pListHead;
pSecond = pListHead;//pListHead指向头结点
for(int i = 0; i < k - 1; i++)//pFirst先走k-1步
{
//如果k的值大于链表的长度,pFrist会越过尾结点
if(pFirst -> next == NULL)
return NULL;
else
pFirst = pFirst -> next;
}
//两个指针一起走,当pFirst指向尾结点时,pSecond指向倒数第k个结点
while(pFirst -> next != NULL)
{
pFirst = pFirst -> next;
pSecond = pSecond -> next;
}
return pSecond;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: