查找链表的倒数第k个结点
方法:设置两个指针fast,slow
让快指针先走k步,随后两个指针一起向后移动,当快指针为空时,慢指针指向的结点即为链表的倒数第k个结点。
#define DataType int
typedef struct Node{
DataType data;
struct Node* next;
}linklist;
linklist * FindLastKNode(linklist *head,int k)
{
linklist *fast = head;
linklist *slow = head;
if (head == NULL && k < 0)
{
return NULL;
}
while (k--)
{
if (fast == NULL)
return NULL;
fast = fast->next;
}
while (fast != NULL)
{
fast = fast->next;
slow =