1 设置快慢指针
2 快指针先走k步
3 快慢指针一起走,当快指针到NULL,慢指针也就是所求
代码片段:
#include<iostream>
#include<stdio.h>
#include<assert.h>
typedef struct Listnode
{
char data;
Listnode *next;
}Listnode;
Listnode *head = NULL;
Listnode * find_last_node(Listnode * head,int k)
{
assert( k >= 0);
Listnode *p_fast = NULL;
Listnode *p_slow = NULL;
p_slow = p_fast = head;
for(;k>0 && p_fast != NULL;k--)
{
p_fast = p_fast->next;
}
if(k>0)
return NULL;
while(p_fast != NULL)
{
p_fast = p_fast ->next ;
p_slow = p_slow ->next;
}
return p_slow;
}