关于建立单向动态链表的理解

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

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

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

示例:

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

说明:

给定的 k 保证是有效的。

快慢指针

个人c语言学的还是不够扎实,看了一下大佬给的图片解释和提点,用一下代码解决了问题。
面试题 02.02. 返回倒数第 k 个节点

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


int kthToLast(struct ListNode* head, int k){
    
    
    int i=0;
    struct ListNode *fast = head;
    struct ListNode *slow = head;
    while(fast->next != NULL)
    {
    
    
        fast = fast->next;
        i++;
        if(i>=k)
            slow=slow->next;
    }
    return slow->val;
}

下面图片很好解释了快慢指针的原理
在这里插入图片描述图片作者:班飞鹏

猜你喜欢

转载自blog.csdn.net/weixin_46689011/article/details/106090913
今日推荐