查找单向链表中倒数第K个节点

本文介绍了一种用于找到链表倒数第K个节点的算法,通过快慢指针的方法实现,提高了查找效率。算法详细步骤包括初始化快慢指针到链表头部、快指针先前进K步、同步移动直至快指针到达链表末尾时,慢指针所指即为倒数第K个节点。

基本思路:

(1)将pSlow和pFast同时指向链表的头部

(2)将快指针向后移动K位

(3)快慢指针同时移动,当pFast为空时,pSlow就指向倒数第K个节点

(4)结束

算法:

 1 LinkList* FindK(LinkList* LK,int K){
 2     LinkList *pSlow,*pFast;
 3     pSlow=pFast=LK;
 4     int i=0;
 5     while(i<K){
 6         pFast=pFast->next;
 7         i++;
 8     }
 9     while(pFast){
10         pSlow=pSlow->next;
11         pFast=pFast->next;
12     }
13     return pSlow;
14 }

转载于:https://www.cnblogs.com/GoAhead/archive/2012/05/24/2516024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值