题解
此题主要考查对链表指针的理解,一般链表有三类节点:表头、表身、表尾;
1.表头的值为空(-1),nextNode 指针指向下一个节点。
2.表身的值为输入的值,nextNode 指针指向下一个节点。
3.表尾的值为输入值,nextNode指针为null
例如:输入五个节点,节点值分别为:4,5,6,7,8;链表如下。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1.输入内容
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt(); // 链表长度
ListNode headNode = new ListNode(-1); // 定义表头
ListNode temp = headNode;
for (int i = 0; i < n; i++) {
int value = sc.nextInt();
temp.nextNode = new ListNode(value);
temp = temp.nextNode;
}
// 2.遍历倒数第k节点的指针
int k = sc.nextInt();
for (int i = 0; i < n - k + 1; i++) { // 链表总长 - 倒数位置k + 本身算起1 = n-k+1
headNode = headNode.nextNode;
}
System.out.println(headNode.value);
}
}
}
class ListNode {
Integer value;
ListNode nextNode;
// 有参构造函数
public ListNode(Integer value) {
this.value = value;
this.nextNode = null;
}
}