关闭

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

501人阅读 评论(0) 收藏 举报
分类:

用迭代法,使用两个指针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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:110372次
    • 积分:3003
    • 等级:
    • 排名:第11743名
    • 原创:180篇
    • 转载:107篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论