求链表的倒数第k个节点

来源:互联网 发布:淘宝精品推荐棉拖鞋 编辑:程序博客网 时间:2024/04/28 13:48

思路是使用两个指针,第一个指针先走k-1步,然后两个指针一起走,当第一个指针走到结尾的时候,第二个指针指向的就是倒数第K个结点。

class MyNode{int value;MyNode next;MyNode(int value){this.next = null;this.value = value;}}/** * @author David * 求链表的倒数第k个节点 */public class Example4 {public static void main(String[] args) {//初始化链表MyNode Node1 = new MyNode(1);MyNode Node2 = new MyNode(2);MyNode Node3 = new MyNode(3);MyNode Node4 = new MyNode(4);MyNode Node5 = new MyNode(5);MyNode Node6 = new MyNode(6);MyNode Node7 = new MyNode(7);MyNode Node8 = new MyNode(8);Node1.next = Node2;Node2.next = Node3;Node3.next = Node4;Node4.next = Node5;Node5.next = Node6;Node6.next = Node7;Node7.next = Node8;new Example4().fun(Node1, 11);}private void fun(MyNode first, int k){MyNode head = first;MyNode tail = first;int length = 0;while(head!=null){head = head.next;length++;}head = first;System.out.println(length);if(k!=0&&k<length){for(int i=0; i<k; i++){head = head.next;}while(head!=null){head = head.next;tail = tail.next;}System.out.println(tail.value);}else{System.out.println("input error");}}}


0 0
原创粉丝点击