题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <iostream> using namespace std; struct ListNode { //链表结点 int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {} //初始化 }; ListNode* FindKthToTail(ListNode* pHead, int k) { ListNode* fast = pHead, *slow = pHead; for (int i = 0; i < k; i++) { if (fast == nullptr) { return slow = nullptr; } fast = fast->next; } while (fast != nullptr) { fast = fast->next; slow = slow->next; } return slow; } int main() { int n; while (cin >> n) { //输入n int val; cin >> val; ListNode* head = new ListNode(val); //链表第一个结点 ListNode* p = head; for (int i = 1; i < n; i++) { //输入链表后续结点 cin >> val; ListNode* q = new ListNode(val); p->next = q; //连接 p = p->next; } int k; cin >> k; //输入k if (k == 0) //k等于0直接输出0 cout << 0 << endl; else { p = FindKthToTail(head, k); //找到第k个结点 if (p != nullptr) //返回不为null才能输出 cout << p->val << endl; } } } // 64 位输出请用 printf("%lld")