问题描述】输入一个单向链表输出该链表中倒数第k个结点链表的最后一个结点是倒数第1个节点。【输入形式】第一行是数据的个数第二行是空格分割的整型值第三行是K值。【输出形式】输出为倒数第K个结点的值若无则输出Not Found。【样例输入】 8 13 45 54 32 1 4 98 2 3【样例输出
【解答思路】 使用两个指针p和q,p先从头结点开始移动k-1步,然后p和q同时向后移动,直到p指向链表的最后一个结点。此时,q指向的结点就是倒数第k个结点。
【代码实现】
template <class DataType>
node<DataType>* linkList<DataType>::reverseFindK(int k)
{
node<DataType>* p = first->next;
node<DataType>* q = first->next;
for(int i=0; i<k-1; i++){
if(p == NULL){
return NULL;
}
p = p->next;
}
if(p == NULL){
return NULL;
}
while(p->next != NULL){
p = p->next;
q = q->next;
}
return q;
}
原文地址: https://www.cveoy.top/t/topic/i8F4 著作权归作者所有。请勿转载和采集!