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

全部评论

相关推荐

买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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