c语言寻找链表的倒数第k个结点
时间: 2024-10-25 18:15:48 浏览: 32
C语言实现输出链表中倒数第k个节点
5星 · 资源好评率100%
在C语言中,查找链表的倒数第k个节点可以采用两个指针法。首先,创建两个指针p和q,初始化p为头节点,然后让它们同时向前移动k步。当p到达链表尾部(p->next == NULL)时,q则指向倒数第k个节点。
以下是步骤的伪代码描述:
```c
Node* findKthFromEnd(Node* head, int k) {
if (head == NULL || k <= 0) return NULL; // 验证输入
Node* p = head;
Node* q = head;
// 移动q指针k步
for (int i = 0; i < k; i++) {
if (q != NULL) q = q->next;
}
// 如果q还没到null,说明k大于链表长度,则返回NULL
if (q == NULL) return NULL;
// 现在p和q分别位于链表的头部和倒数k的位置,p开始移动直到q到达尾部
while (p->next != NULL) {
p = p->next;
q = q->next;
}
// p现在指向倒数第k个节点
return p;
}
```
阅读全文