现在的位置: 首页 > 综合 > 正文

13 输入一个单向链表,输出该链表中倒数第k个结点

2018年05月02日 ⁄ 综合 ⁄ 共 374字 ⁄ 字号 评论关闭
/*
第 13  题:
题目:输入一个单向链表,输出该链表中倒数第 k  个结点。
链表的倒数第0个结点为链表的尾指针。

因为倒数第k个,就是正数第n-k个,因为长度不知道 
用2个指针,第一个走K步,则剩下了n-k步,
与另一指针一起走,则返回第n-k个,即倒数第k个 
*/
struct listNode
{
	int data;
	listNode *next;
};

listNode node;

node * lastK(node *head,int k)
{
	if(k<0) error("k<0");
	node *p=head,*pk=head;
	
	while(k--)//走k步 
	{
		if(pk->next!=NULL)
			pk=pk->next;
		else
			return NULL;
	}
	while(pk->next!=NULL)//p走n-k步,用pk控制 
	{
		p=p->next;pk=pk->next;
	} 
	return p;
}

抱歉!评论已关闭.