1. 程式人生 > >查詢連結串列倒數第k個節點

查詢連結串列倒數第k個節點

演算法描述:

給出一個單向連結串列的頭指標(根指標),輸出該連結串列中倒數第k個節點的指標。連結串列的倒數第0個節點的尾節點(尾節點的next成員為NULL)。函式find_node實現上述功能,連結串列節點定義及函式宣告如下,請實現函式find_node。

typedef struct Node

{

struct  Node *next;

}Node;

Node *find_node(Node *head, unsigned, int k);

演算法實現:

typedef struct Node
{
	struct Node *next;
}Node;
Node *find_node(Node *head, unsigned int k)
{
	int cnt = 0;
	Node *p = head;
	while(p)
	{
		cnt++;
		p = p->next;
	}
	if (cnt < k)
		return NULL;
	cnt = cnt - k - 1;
	p = head;
	while(cnt--)
		p = p->next;
	return p;
}