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

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

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

#include <iostream>
using namespace std;
struct ListNode{
    int val;
    ListNode* next;
    ListNode(int val):val(val),next(nullptr){}
};//链表定义和初始化
int main() {
int n,k;
while(cin>>n){
int size=0;
int val;
ListNode* dummyHead=new ListNode(0);//在最前面定义一个虚拟头节点,这样不论是头结点还是后面的普通节点都直接用同一段代码正常插入删除即可
ListNode* cur=dummyHead;//cur用来遍历节点
while(n){//输入的数值全部存入链表的新节点中
cin>>val;
ListNode* newNode=new ListNode(val);
cur->next=newNode;
cur=cur->next;
n--;
size++;//每输入一个数值,size++,手动来记录链表的长度
}
cin>>k;
 if(k>size||k<=0){return 0;}//如果数值不合法,直接返回
 else {
    cur=dummyHead;//用来遍历的节点cur重新回到虚拟头结点处等待遍历
    while(size-k+1){
        cur=cur->next;
        k++;//目的是为了让while循环的条件 size-k+1不断减1,所以就让k++
    }
    if(cur!=nullptr)//最后也要检验一下输出的合法性,合法再输出
    cout<<cur->val<<endl;
 }
}
return 0;
}

全部评论

相关推荐

07-20 12:08
已编辑
江南大学 图像识别
机械牛马勇闯秋招:把校园经历里面做过的项目,大作业,课设,毕设啥的,扩写,写成具体的项目经历,自我评价缩写别占篇幅,不然这简历真没东西,初筛都过不了
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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