求倒数第k个节点,可以设置快、慢2个指针,让快指针先走K步,这样快慢指针之间的差距就是K个节点,然后让快、慢指针同步往后走,当快指针为NULL时,慢指针就是第K个节点。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
*
* @param pListHead ListNode类
* @param k int整型
* @return ListNode类
*/
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
struct ListNode* fast = pListHead;
struct ListNode* slow = pListHead;
for (int i = 0; i < k ; i++)
{
if(fast == NULL)
{
return NULL;
}
fast = fast->next;
}
while(fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}