#include <iostream> using namespace std; static struct ListNode { int val; ListNode* m_pNext; ListNode(int v) : val(v), m_pNext(nullptr) {} }; // 定义单向链表类 static class SinglyLinkedList { private: ListNode* header; public: SinglyLinkedList() : header(nullptr) { } // 插入节点 void insertNode(int val) { ListNode* newNode = new ListNode(val); ListNode* current = header; ListNode* prev = nullptr; if (header == nullptr) { header = newNode; return; } while (current != nullptr) { prev = current; current = current->m_pNext; } prev->m_pNext = newNode; } // 查找第 倒数第 k 个节点的值; void printNode(int k) { if (k < 1) return; // 双指针 ListNode* current = header; ListNode* prev = header; // 让 一个指针先跑 k 个位置;; while (k--) { current = current->m_pNext; } // 再 两个同时移动,知道current 为 空,说明到了末尾;前一个指针就是倒数的位置了; while (current != nullptr) { prev = prev->m_pNext; current = current->m_pNext; } cout << prev->val << endl; } // 遍历 链表 void traverse() { ListNode* current = header; while (current != nullptr) { cout << current->val << " "; current = current->m_pNext; } cout << endl; } // 析构函数 ~SinglyLinkedList() { ListNode* current = header; ListNode* nextNode; while (current != nullptr) { nextNode = current->m_pNext; delete current; current = nextNode; } } }; int main() { int n; while (cin >> n) { SinglyLinkedList s; while (n--) { int val; cin >> val; s.insertNode(val); } int k; cin >> k; s.printNode(k); } return 0; }