求链式线性表的倒数第k项 (20 分)
时间: 2023-04-30 12:00:42 浏览: 112
链表中倒数第k个结点
链式线性表的倒数第k项可以通过双指针法来实现。首先定义两个指针p和q,让p指向链表的头结点,q指向p的后k个节点。然后同时移动p和q指针,直到q指向链表的末尾。此时p指向的节点就是倒数第k个节点。
具体实现过程如下:
1. 定义两个指针p和q,让p指向链表的头结点,q指向p的后k个节点。
2. 同时移动p和q指针,直到q指向链表的末尾。
3. 返回p指向的节点。
代码实现如下:
```
ListNode* findKthToTail(ListNode* head, int k) {
if (head == nullptr || k <= ) {
return nullptr;
}
ListNode* p = head;
ListNode* q = head;
for (int i = ; i < k - 1; i++) {
if (q->next != nullptr) {
q = q->next;
} else {
return nullptr;
}
}
while (q->next != nullptr) {
p = p->next;
q = q->next;
}
return p;
}
```
其中,ListNode是链表节点的结构体,包含一个val成员表示节点的值,一个next成员表示指向下一个节点的指针。
阅读全文