链表中倒数第k个节点

来源:互联网 发布:淘宝类目属性数据库 编辑:程序博客网 时间:2024/06/03 18:15

本题从1开始计数,即链表尾节点是倒数第1个节点

public class FindKthNode{public static void main(String[] args){//创建链表Node head = new Node(0);System.out.println(head.value);Node[] p = new Node[5];int i = 0;for(i = 0; i<5; i++){p[i] = new Node(i+1);System.out.println(p[i].value);if(i >= 1){p[i-1].next = p[i];}else{head.next = p[i];}}int k = 4;Node kNode = findEndKth(head, k);System.out.println("======倒数第"+k+"个节点为:"+kNode.value);}private static Node findEndKth(Node head, int k){//注意此处代码的鲁棒性if(head == null || k <=0){return null;}Node headNode = head;Node kNode = head;for(; k>1; k--){  //先走k-1步//注意此处for循环应该加上判断 如果k大于链表节点数,就会有空指针 此时直接返回if(headNode.next != null){headNode = headNode.next;}else{System.out.println("k值大于节点数");return null;}}while(headNode.next != null){ //注意此处没有next时(多走一步)会计算倒数第k+1个节点 需要与前面k循环配合使用headNode = headNode.next;kNode = kNode.next;}return kNode;}}


0 0
原创粉丝点击