您的位置:首页 > Web前端

剑指offer:链表中倒数第k个结点(链表)

2015-07-06 10:24 169 查看


题目描述

输入一个链表,输出该链表中倒数第k个结点。

分析:

两个指针pointResult和pointEnd一起指向头结点,然后根据k,移动pointEnd,使pointResult和pointEnd的距离为k-1。然后同时移动pointResult和pointEnd,当pointEnd指向最后一个结点时,pointResult指向倒数第k个结点。这种方法只用遍历一次链表。

代码:

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead==nullptr || k<1) return nullptr;
ListNode* pointResult = pListHead;
ListNode* pointEnd = pListHead;
int i;
for(i=1;i<k;i++){
if(!pointEnd->next) break;
pointEnd = pointEnd->next;
}
if(i!=k) return nullptr;
while(pointEnd->next){
pointEnd = pointEnd->next;
pointResult = pointResult->next;
}
return pointResult;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: