输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。c 语言
时间: 2023-11-20 21:26:39 浏览: 76
C语言实现输出链表中倒数第k个节点
5星 · 资源好评率100%
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* findKthToTail(struct ListNode* head, int k) {
if (head == NULL || k <= 0) {
return NULL;
}
struct ListNode* p1 = head;
struct ListNode* p2 = head;
// p2先向后移动k-1个结点
for (int i = 0; i < k - 1; i++) {
if (p2->next != NULL) {
p2 = p2->next;
} else {
// k大于链表长度
return NULL;
}
}
// p1和p2一起向后移动,直到p2到达链表尾部
while (p2->next != NULL) {
p1 = p1->next;
p2 = p2->next;
}
return p1;
}
阅读全文