【解答思路】 使用两个指针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;
}
问题描述】输入一个单向链表输出该链表中倒数第k个结点链表的最后一个结点是倒数第1个节点。【输入形式】第一行是数据的个数第二行是空格分割的整型值第三行是K值。【输出形式】输出为倒数第K个结点的值若无则输出Not Found。【样例输入】 8 13 45 54 32 1 4 98 2 3【样例输出

原文地址: https://www.cveoy.top/t/topic/i8F4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录