题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int m_nKey;
struct ListNode* M_pNext;
} NODE;
int main() {
int num = 0;
int data[1000] = {0};
int k = 0;
int* p = data;
while (1) {
scanf("%d", &num);
scanf("%d", &data[0]);
/*定义头节点*/
NODE* head = (NODE*)malloc(sizeof(NODE));
head->m_nKey = data[0];
head->M_pNext = NULL;
/*定义头指针*/
NODE* headp = NULL;
headp = head;
/*定义K指示指针*/
NODE* prenode = NULL;
p++;
if (scanf("%d", p) == EOF) {
break;
}
for (int i = 2; i <= num; i++) {
p++;
scanf("%d", p);
}
p -= num;
k = data[num];
for (int i = 1; i <= num; i++) {
NODE* listnode = (NODE*)malloc(sizeof(NODE));
listnode->m_nKey = data[i];
listnode->M_pNext = NULL;
head->M_pNext = listnode;
head = listnode;
if (i == k) {
prenode = headp;
} else if (i > k) {
prenode = prenode->M_pNext;
}
}
if (prenode == NULL) {
printf("NULL\n");
} else {
printf("%d\n", prenode->m_nKey);
}
}
return 0;
}
查看2道真题和解析