题目描述
链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点。
示例1:
输入:1,{1,2,3,4,5}
输出:{5}
题解
本题依旧采用快(fast)慢(slow)指针即可,题目要求求出链表中倒数第k个结点,那么先让fast指针先走k步,然后在让slow指针开始走,两个指针同时走,每次走一步,直至fast 等于NULL时结束。
初始情况:
①让fast先走k步,(本例中k为1)
②再让slow指针开始走,两个指针每次向后走一个
③重复②的过程,直至fast == NULL结束
题解代码
struct ListNode* FindKthToTail(struct ListNode* pListHead,int k) {
// write code here
struct ListNode* slow= pListHead,*fast= pListHead;
while(k--){
if(fast == NULL){
return NULL;
}else{
fast = fast->next;
}
}
while(fast != NULL){
slow = slow->next;
fast = fast->next;
}
return slow;
}