#include <stddef.h> #include <stdio.h> #include <stdlib.h> struct ListNode { int val; struct ListNode* next; }; // 创建链表 struct ListNode* createList(int len) { struct ListNode* testlist = (struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode)); head = testlist; for (int i = 1; i <= len; i++) { testlist->val = i; if (i == len) { testlist->next = NULL; break; } testlist->next = (struct ListNode*)malloc(sizeof(struct ListNode)); testlist = testlist->next; } return head; } struct ListNode* Find_k(struct ListNode* head, int k) { struct ListNode* temp1 = head; struct ListNode* temp2 = head; int i = 0; // 两个指针一前一后遍历,间隔k个节点 while (temp1->next != NULL) { temp1 = temp1->next; i++; if (i >= k) { temp2 = temp2->next; } } printf("%d", temp2->val); return 0; } int main() { int a; int len = 7; struct ListNode* head; scanf("%d", &a); head = createList(len); Find_k(head, a); free(head); }