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

全部评论

相关推荐

09-26 10:17
安徽大学 Java
点赞 评论 收藏
分享
我只是一个小白菜:我还用不惯m4,也是山猪吃不了细糠了
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
09-13 08:41
服装/纺织设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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