-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path链表中倒数第k个结点.txt
41 lines (39 loc) · 921 Bytes
/
链表中倒数第k个结点.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
/*追赶法还是比较常用的方法了
但是本题主要还是考查鲁棒性吧
当链表长度不到k的情况,头结点为空,或者k==0
k==0时或出现无限循环是因为无符号数0是一个超级大的数
0xFFFFFFFF即4294967295
*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(NULL == pListHead || k <= 0)
return NULL;
ListNode* pAhead = pListHead;
ListNode* pBehind = NULL;
for(int i=0;i<k-1;++i)
{
if(pAhead->next != NULL)
{
pAhead = pAhead->next;
}
else
return NULL;
}
pBehind = pListHead;
while(pAhead->next!=NULL)
{
pBehind = pBehind->next;
pAhead = pAhead->next;
}
return pBehind;
}
};