题解 | #输出单向链表中倒数第k个结点#

#include <bits/stdc++.h>

using namespace std;

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
    ListNode() : m_nKey(0), m_pNext(nullptr){};
    ListNode(int x) : m_nKey(x), m_pNext(nullptr){};
};

ListNode* findNode(ListNode* head, int k){
    ListNode* slow = head;
    ListNode* fast = head;
    
    while(k--){
        fast = fast->m_pNext;
    }
    //fast = fast->m_pNext;
    
    while(fast != nullptr){
        slow = slow->m_pNext;
        fast = fast->m_pNext;
    }
    
    return slow;
}

int main(){
    int num = 0;
    while(cin >> num){
        //构建链表
        ListNode* head = new ListNode();
        ListNode* dummyHead = head;
        
        while(num--){
            int nodeNum = 0;
            cin >> nodeNum;
            ListNode* next = new ListNode(nodeNum);
            head->m_pNext = next; //
            head = next; //
        }
        
        //寻找倒数第k个节点
        int k = 0;
        cin >> k;       
        ListNode* res = findNode(dummyHead->m_pNext, k); //
        
        if(res != nullptr){
            cout << res->m_nKey << endl;
        }
        else{
            cout << "0" << endl;
        }
    }
    
    return 0;
}
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务