题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <stdio.h> #include <string.h> typedef struct ListNode { int m_nKey; struct ListNode* m_pNext; } ListNode, *List; int main() { List s; struct ListNode* p, *r; int n; while (scanf("%d", &n) != EOF) { int i; s = (List)malloc(sizeof(ListNode)); s->m_pNext = NULL; r = s; for (i = 0; i < n; i++) { p = (ListNode*)malloc(sizeof(ListNode)); scanf("%d", &p->m_nKey); p->m_pNext = NULL; r->m_pNext = p; r = p; } ListNode* fast, *slow; int k; fast = s; slow = s; scanf("%d", &k); while (k--) { fast = fast->m_pNext; } while (fast != NULL) { fast = fast->m_pNext; slow = slow->m_pNext; } printf("%d\n", slow->m_nKey); ListNode* fre; while (s != NULL) { fre = s->m_pNext; free(s); s = fre; } } return 0; }