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

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

#include <bits/stdc++.h>
#include <iterator>
using namespace std;

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

int main() {
    int count, key, k;
    list<ListNode*> lln;
    while (cin >> count) { // 注意 while 处理多个 case
        // 1.正序构造链表
        for (int i = 0;i < count;++i) {
            ListNode* p = new ListNode;
            cin >> key;
            p->m_nKey = key;
            lln.emplace_back(p);
        }
        // 2.忽略构造链表前的长度 count
        // 直接用迭代器定位,获取尾部指针,后退 k 次
        cin >> k;
        auto p = lln.begin();
        auto q = p;
        for (int i = 0;i < k;i++) {
            q++;
        }

        while (q != lln.end()) {
            p++;
            q++;
        }

        auto x = *p;
        cout << x->m_nKey << endl;
    }
    return 0;
}

// 64 位输出请用 printf("%lld")

全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务