#include <iostream> using namespace std; struct ListNode{ int m_nKey; ListNode* m_pNext; ListNode():m_nKey(0),m_pNext(nullptr){}; ListNode(int x):m_nKey(x),m_pNext(nullptr){}; }; // 之前我的代码还是记住了长度 违背题意 即使能ac // 快慢指针法 int main() { int n, a; while (cin >> n) { // 注意 while 处理多个 case ListNode* head = new ListNode(); // 作为中间变量了 ListNode* pre = head; // 固定的头结点 while(n--) { cin >> a; ListNode* tmp = new ListNode(a); head->m_pNext = tmp; head = head->m_pNext; } int k; cin >> k; // 真正题意应该是快慢指针吧 ListNode* left = pre; ListNode* right = pre; for(int i=0; i<k-1; ++i) // 演算下就知道这里走k-1次 { right = right->m_pNext; } while(right->m_pNext!=nullptr) { left = left->m_pNext; right = right->m_pNext; } if(left==nullptr) { cout<<-1<<endl; } else { cout<<left->m_nKey<<endl; } } } // 64 位输出请用 printf("%lld")