栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

面试题 02.02. 返回倒数第 k 个节点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试题 02.02. 返回倒数第 k 个节点

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4

说明:

给定的 k 保证是有效的。

int kthToLast(struct ListNode* head, int k)
{
    assert(head!=NULL);

    //题目说明可省略k合理性判断

    //创建一个假头结点
    struct ListNode* plist=(struct ListNode*)malloc(1*sizeof(struct ListNode));
    assert(plist!=NULL);

    plist->next=head;

    //定义两个指针 p q都指向假头结点
    struct ListNode* p=plist;
    struct ListNode* q=plist;

    //让指针p先走k步
    for(int i=0;inext;
    }

    //此时 p q同时向后面走,p==NULL时,q指向倒数第k个节点
    while(p!=NULL)
    {   
        p=p->next;
        q=q->next;
        if(p==NULL)
        {
            return q->val;
        }
    }

  return;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号