题解 | #输出单向链表中倒数第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; } }