typedef struct NodeList {
int value;
struct NodeList *next;
}NodeList;
有如上节点类型的单向链表,求链表的倒数第K个节点。
(1)递归
NodeList* find_node(NodeList *node, int K)
{
//记录倒数第几个节点
static int index = 0;
NodeList *tmp = NULL;;
if (node != NULL)
{
tmp = find_node(node->next);
if (K == index)
{
tmp = node;
}
}
index++;
return tmp;
}
(2)通过两个指针
NodeList* find_node(NodeList *node, int K)
{
int len = 0;
NodeList *node_last = NULL;
NodeList *node_k = NULL;
node_last = node;
while (node_last != NULL)
{
len++;
node_last = node_last->next;
if (len == K)
{
node_k = node;
}
else if (len > K)
{
node_k = node_k->next;
}
}
return node_k;
}