您的位置:首页 > 其它

14 链表中倒数第k个结点

2018-03-22 15:03 253 查看
定义两个指针start和end,让start先走k步(在走的过程中,需要判断start是否指向NULL,指向的话说明链表长度小于k,直接返回NULL),然后再判断当前start是否指向NULL,指向的话说明量表长度等于k,直接返回end,否则令它们同时往后移动,当start到达链表末尾时,end所指即为链表中倒数第k个结点。

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
ListNode* start = pListHead;
ListNode* end = pListHead;
if(k == 0) return NULL;
while(k != 0 and start!= NULL){
start = start->next;
--k;
}
if(k > 0) return NULL;

while(start != NULL){
start = start->next;
end = end->next;
}
return end;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: