题解 | #输出单向链表中倒数第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; }