题解 | #输出单向链表中倒数第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")
海康威视公司氛围 975人发布
查看13道真题和解析