题目描述:
输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)
分析:
定义两个指针,第一个先走k-1步,第二个跟上一起走,当第一个走到末尾时就是第二个走到了倒数第k个节点的时候,返回。(只需遍历一次链表)
java代码实现:
private static Node findNode(LinkedList list, int k) {
if(list == null)
return null;
Node pAhead = list.getHeader();
for(int i=0;i<k-1;i++) {
pAhead = pAhead.next;
}
Node pBehind = list.getHeader();
while(pAhead.next != null) { //因为链表包含了尾节点
pAhead = pAhead.next;
pBehind = pBehind.next;
}
return pBehind;
}