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

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

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

#include <bits/stdc++.h>
using namespace std;
typedef struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
}*listnode;//listnode命名相当于struct ListNode*
int main() {
    int n;
    while(cin>>n){//多组样例,输入必须写成循环
    listnode head = (ListNode*)malloc(sizeof(ListNode));//定义头节点
    listnode p;//临时节点
    head->m_pNext=NULL;//指向空
    p=head;//初始时,两个点相同
    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;//输入的key值
        if(i==0){//赋初值
            p->m_nKey=temp;
            continue;
        }
        listnode tempnode = (ListNode*)malloc(sizeof(ListNode));//malloc开辟空间
        tempnode->m_pNext=NULL;//开辟的空间指向空
        tempnode->m_nKey=temp;//新空间存key值
        p->m_pNext=tempnode;//p指向该节点第一步
        p=p->m_pNext;//p指向该节点第二步
    }
    int k;
    cin>>k;
    p=head;
    while(k>0){//双指针,第一个指针与第二个指针差k,当第二个指针为空,第一个指针就指向倒数第k个节点
        p=p->m_pNext;
        k--;
    }
    while(p!=NULL){
        p=p->m_pNext;
        head=head->m_pNext;
    }
    cout<<head->m_nKey<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

李橙子:结果虽不够理想,但过程本身已是宝贵的淬炼。能把学习机会放在薪酬之前,证明你目光长远。先踏实进去,用这段时间扎实学好Python后端,把公司项目吃透,你的价值会在下一份工作中完全体现。这个起点,值得。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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