[java 面试100道]13.输入一个单向链表,输出该链表中倒数第k个结点。
2012-10-15 09:56
645 查看
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
链表结点定义如下:
k=2
结果:4
链表结点定义如下:
class ListNode{ int key; ListNode next; public ListNode(int key){ this.key=key; } }
public class LastK { public ListNode getLastK(ListNode head,int k){ if(k<0) { System.err.println("k<0"); return null; } ListNode p=head; ListNode pk=head; for(;k>0;k--){//pk走了k步 if(pk.next!=null) pk=pk.next; else { return null; } } while(pk.next!=null){//pk再走n-k步,p也走n-k,则p为倒数第k个结点 p=p.next; pk=pk.next; } return p; } public static void main(String[] args) { int k=2; ListNode head=new ListNode(0); ListNode[] p=new ListNode[6]; for (int i = 0; i < p.length; i++) { p[i]=new ListNode(i+1); if(i>0) p[i-1].next=p[i]; else { head.next=p[0]; } } LastK l=new LastK(); ListNode r=l.getLastK(head, k); System.out.println(r.key); } }链表0-1-2-3-4-5-6
k=2
结果:4
相关文章推荐
- 微软100题13题(输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针)
- 13 输入一个单向链表,输出该链表中倒数第k个结点
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)
- 今天开始学Java 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
- 13输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。
- 微软面试之13 输入一个单向链表 输出该链表的倒数第k个节点
- 13.输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 13、输入一个单向链表,输出该链表中倒数第k个结点
- 微软面试100题之13题:输入一个单向链表,输出该链表中倒数第k 个结点
- 微软算法100道题------输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 面试9之输入一个链表,输出该链表中倒数第k个结点。
- 输入一个单向链表,输出该链表中倒数第K个结点
- 输入一个单向链表,输出该链表中倒数第K个结点
- 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第k个结点
- 输入一个单向链表,输出该链表中倒数第K个结点
- java实现输入一个链表,输出该链表中倒数第k个结点。
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针
- 输入一个单向链表,输出其倒数第k个结点