代码:
package com.likou;
public class ListNode {
int val; // 节点的值
ListNode next; // 下一个节点
ListNode(int x) { val = x; } // 带参构造方法
// 添加成员方法,添加节点
public void addNode(ListNode head,ListNode node){
ListNode temp = head;
while (temp.next != null){
temp = temp.next;
}
temp.next = node;
}
}
package com.likou;
/**
* 倒数第k个节点
*/
public class test22 {
public static void main(String[] args) {
ListNode head = new ListNode(1);
head.addNode(head,new ListNode(2));
head.addNode(head,new ListNode(3));
head.addNode(head,new ListNode(4));
head.addNode(head,new ListNode(5));
System.out.println(fun(head,2).val);
}
/**
* 打印出链表中倒数第k个节点
* @param head
* @param k
*/
private static ListNode fun(ListNode head, int k) {
// 统计链表有几个节点
ListNode cur = head;
int count = 1;
// 统计链表的节点个数
while (cur.next !=null){
count++;
cur = cur.next;
}
cur = head;
// 从头结点开始遍历
for (int i=0;i<(count-k);i++){
cur = cur.next;
}
//System.out.println("倒数第k个节点值为:"+cur1.val);
return cur;
}
}