【Java】实现一个算法,找出一个单链表中倒数第K个结点

用迭代法,使用两个指针P1和P2,分别指向链表中相聚K个结点的两个结点。

P1,p2均指向头加点,然后将P2向前移动K个结点。之后,以相同的速度移动这两个指针,那么p2会在length-K步后到达尾结点,这时p1就刚好在第length-K个结点也就是倒数第K个结点的位置上。

LinkListNode nthToLast(LinkListNode head, int k)
{
	if( k<0 ) return null;
	LinkListNode p1 = head;
	LinkListNode p2 = head;
	//先将P2向前移动k个结点
	for(i = 0; i < k; i++)
	{
		if (NULL == p2) return NULL;
		else p2 = p2->next;
	}
	if (NULL == P2) return NULL;
	
	//接着以同样的速度移动p1和p2,当p2抵达链表末尾时,p1指向第K个结点
	while(p2->next != NULL)
	{
		p1 = p1->next;
		p2 = p2->next;
	}
	return p1;
}


阅读更多
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

【Java】实现一个算法,找出一个单链表中倒数第K个结点

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭