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

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
牛客77743221...:做一段时间,公司出钱送你去缅甸和泰国旅游
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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