题解 | #输出单向链表中倒数第k个结点# 用尾插法与双指针

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

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

#include <iostream>
using namespace std;

//定义链表
struct ListNode{
    int val;
    ListNode* next;
    ListNode(int x):val(x),next(nullptr){}; //初始化函数
};

int main() {
    int num,val;
    while(cin>>num){ //测试用例有多次输入
        cin>>val;
        //使用尾插法建立链表
        ListNode* head=new ListNode(val); //头结点
        ListNode* p=head; //尾指针
        for(int i=1;i<num;i++){
            cin>>val;
            ListNode* q=new ListNode(val); //插入结点
            p->next=q; //将上一结点与插入结点建立连接
            p=q; //保持尾指针指向最后一个结点
        }
        p->next=nullptr; //指向空
        //使用双指针找倒数第k个数
        int k;
        cin>>k;
        ListNode* fast=head,* slow=head;
        while(k--){
            fast=fast->next;
        }
        while(fast!=nullptr){
            fast=fast->next;
            slow=slow->next;
        }
        cout<<slow->val<<endl;;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
10-03 17:08
已编辑
西安电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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