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

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

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

#include<iostream>
#include<vector>
#include<stack>
using namespace std;

typedef struct ListNode {
    int m_nKey;
    ListNode* n_pNext;
}*LinkNode;

LinkNode creatList(int num,vector<int> value)
{
    LinkNode Head = new ListNode;
    Head->m_nKey=value[0];
    Head->n_pNext=NULL;
    LinkNode p = Head;
    for(int i=1 ; i<num ; i++){
        LinkNode node = new ListNode;
        node->m_nKey=value[i];
        node->n_pNext=NULL;
        p->n_pNext = node ;
        p = node;
    }
    return Head;
}

int main()
{
    LinkNode H;
    int num;
    int k;
    vector<int>value;
    int i=0;
    while(cin>>num){

        value.resize(num);
        for(int i = 0; i<num ; i++){
            cin>>value[i];
        }
        cin >> k ;

        H = creatList(num,value);
        stack<int> mystack;
        LinkNode p = H;
        while(p!=NULL){
            mystack.push(p->m_nKey);
            p = p->n_pNext;
        }
        for(int i=0 ; i<(k-1); i++){
            mystack.pop();
    }
        cout<<mystack.top()<<endl;
    }
    return 0;
}

看了下主要有两种解法,一种是双指针(这确实是个好思路),还有一个是使用递归。

我通过先建了一个stack容器,把正序链表依次入栈,然后出栈对应的个数,本质思想和递归也是一样的。但不知道有没有违背题目的本意,因为我使用了stack容器

全部评论

相关推荐

点赞 评论 收藏
分享
11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务