题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
#include <iostream>
using namespace std;
class Mylist
{
private:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
ListNode *pHead;
ListNode *pTail;
int m_num;
public:
Mylist():pHead(nullptr),pTail(nullptr),m_num(0)
{
ListNode *pTemp = new ListNode;
pTemp->m_nKey = 0;
pTemp->m_pNext = NULL;
pHead = pTemp;
pTail = pTemp;
}
void push_back(int num)
{
ListNode *pTemp = new ListNode;
pTemp->m_nKey = num;
pTemp->m_pNext = NULL;
pTail->m_pNext = pTemp;
pTail = pTemp;
}
int val_back(int inverse_num)
{
ListNode *pPre = pHead->m_pNext;
int n = m_num - inverse_num;
if (n < 0) return 0;
while (n--)
{
pPre = pPre->m_pNext;
}
return pPre->m_nKey;
}
void set_num(int num)
{
m_num = num;
}
};
int main() {
int cnt,val,i;
while (cin >> cnt){
Mylist l;
l.set_num(cnt);
while(cnt--){
cin >> val;
l.push_back(val);
}
cin >> i;
cout << l.val_back(i) <<endl;
}
}
查看3道真题和解析