如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。
import linkList.Node;
/**
* 题目:链表中倒数第K个节点
* 描述:输入一个链表,输出链表中倒数第K个结点。
* 解题:定义两个指针p1,p2。p1从头开始向前走k-1步,第二个指针保持不动;
* 从第k步开始,两个指针开始遍历,当p1走到最后一个结点,p2正好是倒数第K个。
* 注意:1、head为空
* 2、链表长度小于K(在for循环的时候一定要注意)
* 3、输入的k为0
* @author lenovo047
*
*/
public class test15 {
public static ListNode FindKthToTail(ListNode head,int k) {
if(head == null || k == 0){
return null;
}
ListNode p1 = head;
ListNode p2 = head;
for(int i = 0; i < k-1; i++){
if(p1.next != null){
p1 = p1.next;
}else{
return null;
}
}
while(p1.next != null){
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
}