题解 | #输出单向链表中倒数第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;
}
查看10道真题和解析