编程

用户头像
来自沈阳师范大学-于山纳发布于:2025-12-30 21:32:33
#include #include // 定义链表节点 typedef struct Node { int data; struct Node *next; } Node; int main() { int k, num; Node *head = NULL, *tail = NULL, *fast, *slow; // 读取K值并判断合法性 if (scanf("%d", &k;) != 1 || k <= 0) { printf("NULL\n"); return 0; } // 构建链表(边读边存,无单独函数) while (scanf("%d", #) == 1 && num >= 0) { Node *newNode = (Node*)malloc(sizeof(Node)); newNode->data = num; newNode->next = NULL; head ? (tail->next = newNode, tail = newNode) : (head = tail = newNode); } // 双指针查找倒数第K项 fast = slow = head; for (int i = 0; i < k; i++) { if (!fast) { printf("NULL\n"); return 0; } fast = fast->next; } while (fast) { fast = fast->next; slow = slow->next; } // 输出结果 slow ? printf("%d\n", slow->data) : printf("NULL\n"); // 释放内存(简化版释放,无单独函数) Node *tmp; while (head) { tmp = head; head = head->next; free(tmp); } return 0; }
点赞 (1) 回复
发布回复
点击图片