题解

此题主要考查对链表指针的理解,一般链表有三类节点:表头、表身、表尾;

1.表头的值为空(-1),nextNode 指针指向下一个节点。

2.表身的值为输入的值,nextNode 指针指向下一个节点。

3.表尾的值为输入值,nextNode指针为null

例如:输入五个节点,节点值分别为:4,5,6,7,8;链表如下。

alt

代码

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;
    }
}