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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务