zoukankan      html  css  js  c++  java
  • 如何找出单链表中的倒数第k个元素

    方法一:快慢指针法

    1. 在查找过程中,设置两个指针,初始时指向首元结点(第一个元素结点)。
    2. 然后,让其中一个指针先前移k步。
    3. 然后两个指针再同时往前移动。当先行的指针值为NULL时,另一个指针所指的位置就是所要找的位置。
    struct Node {
        int data;
        Node *next;
    };
    
    /*
    函数功能:找出链表倒数第k个结点
    输入参数:head:链表头指针(指向头结点)
    返回值:指向倒数第k个结点的指针
    */
    Node* findLastK(Node* head,int k) {
        if (head == NULL || head->next == NULL)
            return head;
    
        Node *slow, *fast;
        fast = slow = head->next;
        int i;
        for (i = 0; i < k&&fast; ++i) {
            fast = fast->next;
        }
    
        //判断k是否已超出链表长度
    
        if (i < k) return NULL;
        while (fast != NULL) {
            fast = fast->next;
            slow = slow->next;
        }
    
        return slow;
    }
  • 相关阅读:
    装饰器
    内置函数
    文件操作
    函数
    数据结构[总结笔记]
    汉诺塔解题思路
    springboot事物
    mysql5.7.29 zip包安装教程
    mysql常用语句【转载】
    springboot+mysql+jpa+sharding-jdbc+druid读写分离
  • 原文地址:https://www.cnblogs.com/fuqia/p/10266836.html
Copyright © 2011-2022 走看看