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

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

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

#include <iostream>
#include <malloc.h>
#include <stack>
using namespace std;

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

int main() {
    int num;
    while (cin >> num) { // 注意 while 处理多个 case
        ListNode *lis = (ListNode*)malloc(sizeof(ListNode));
        ListNode *pt = lis;
        pt->m_nKey=-1;
        pt->m_pNext=nullptr;
        for(int i=0;i<num;++i){
            int in;
            cin>>in;
            ListNode *temp = (ListNode*)malloc(sizeof(ListNode));
            temp->m_nKey = in;
            temp->m_pNext=nullptr;
            pt->m_pNext=temp;
            pt=pt->m_pNext;
        }
        pt=lis;
        stack<int> sk;
        while(true){
            ListNode* tp = pt;
            pt=pt->m_pNext;
            free(tp);
            if(pt!=nullptr){sk.push(pt->m_nKey);}
            else{break;}
        }
        int del;
        cin>>del;
        for(int i=0;i<del-1;++i){
            sk.pop();
        }
        cout<<sk.top()<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
字节跳动冲冲冲冲:随时都可以投,9 10和2 3月份比较好找
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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