面试题22:链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个结点。

思路在代码里面有,这里主要讲注意代码的鲁棒性,注意异常情况:

  1. 若输入的链表为空;
  2. 若输入的<=0;
  3. 若链表长度小于k.
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) 
    {
     //处理异常情况1,2
     if (pListHead == nullptr||k<=0)
         return nullptr;
     ListNode* p1 = pListHead, * p2 = pListHead;
     int i = 1;
     //p1走到k-1个位置
     while (i<k)
     {
         p1 = p1->next;
         i++;
         //处理异常情况3
         if (p1 == nullptr)
         {
             return nullptr;
         }
     }
     //p1与p2同步向后遍历,直至p1走到末端,p1所指即为倒数第k个节点
     while (p1->next!=nullptr)
     {
         p1 = p1->next;
         p2 = p2->next;
     }
     return p2;
    }
全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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