判断单链表是否存在回环

2023-05-16

/*
    Author: Victor LV
    Date: 2016-9-6 10:14
    Description: 判断单链表是否有回环C++ 
*/

/**
* C++:判断单链表是否存在回环 
* 输入:list的头指针
* 返回:bool:true表示有回环,false表示无 
*/ 

/**解题思想: 
*这里也是用到两个指针。如果一个链表中有环,
*也就是说用一个指针去遍历,是永远走不到头的。
*因此,我们可以用两个指针去遍历,
*一个指针一次走两步,一个指针一次走一步,
*如果有环,两个指针肯定会在环中相遇。
*时间复杂度为O(n)。
*/ 

bool hasLoop(ListNode *pHead)
{
    if(pHead == NULL || phead->next == NULL)
        return false;
    ListNode *pFast = pHead; //快指针每次前进两步 
    ListNode *pSlow = pHead; //快指针每次前进一步 
    while(pFast != NULL && pSlow !== NULL)
    {
        pFast = pFast->next;
        pSlow = pSlow->next;
        if(pFast->next != NULL)
            pFast = pFast->next;
        if(pFast == pSlow)
            return true;
    }
    return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断单链表是否存在回环 的相关文章

随机推荐

  • ArrayList排序返回值问题

    记录 xff0c ArrayList排序不好使 Comparator返回值在1 7里必须是一对相反数 xff0c 如1和 1 xff0c 不能是1和0 因为1 7的排序算法采用timsort http baike baidu com lin
  • Qt5.14.2 编程应用

    目录 简介 什么是Qt Qt可以做什么 安装 ubuntu安装Qt5 14 2 1 xff0c 下载地址 xff1a Index of archive qt 5 14 5 14 2 2 xff0c 安装 示例与运行 查看官方示例源代码 创建
  • 解读AFNetworking4.0请求原理

    简介 AFNetworking4 0 是对NSURLSession的封装 xff0c 之前版本有NSURLConnection的封装 xff0c 现在已经被废弃 简单聊一下 xff0c 为啥AF要弃用之前的NSURLConnection封装
  • SSM框架中的数据库连接问题

    SSM框架搭建好以后 xff0c 由于log4j的日志输出有限 xff0c 经常遇见事务无法执行但是却很难定位的情况 DEBUG以后才发现是Mapper文件中的语法错误导致 所以 xff0c 在异常转化的拦截器类 xff08 Busines
  • 一文详解Unexpected character (‘“‘ (code 34)): was expecting comma to separate Object entries的问题

    文章目录 1 复现问题2 分析问题3 解决问题4 重要补充4 1 knife4j的详细教程 1 复现问题 今天在使用knife4j请求后端接口时 xff0c 首次请求能够正常访问 只是修改个参数值 xff0c 就报出如下错误信息 xff1a
  • 全网超详细的VMware虚拟机安装Kali Linux系统以及首次启动Kali Linux系统的注意事项

    文章目录 1 简述Kali Linux2 下载Kali Linux的镜像文件3 安装Kali Linux4 首次启动Kali Linux5 其他方法安装Kali Linux 1 简述Kali Linux 引入知乎上的一句话 xff0c 如下
  • Error attempting to get column ‘xxx‘ from result set. Cause: java.sql.SQLDataException错误的解决方法

    文章目录 1 复现错误2 分析错误3 解决错误4 文末总结 1 复现错误 今天写好导入hive表的详情列表的接口 xff0c 如下代码所示 xff1a span class token comment hive表导入的回调接口 64 aut
  • 文件传输协议FTP、SFTP、SCP

    今天在了解Ansible的时候看到了Ansible是基于SFTP协议进行文件传输的 xff0c 就想了解下FTP协议与SFTP协议的区别 xff0c 因为总结了这篇文章 应用层 xff1a HTTP xff08 Hypertext Tran
  • SSH配置免密登录 详解(踩坑无数总结)

    之前在使用Ansible部署工具的时候 xff0c 需要先配置好SSH免密登录 xff0c 在配置时踩了很多的坑 xff08 按照很多文章的步骤并不能完全配置好免密登录 xff09 xff0c 因此在踩完所有的坑之后 xff0c 总结出来这
  • CentOS7.6升级内核到5.11及build RPM包

    目录 源码编译方式升级内核 安装依赖包 升级GCC 编译安装kernel5 11 构建RPM包 安装RPM包 源码编译方式升级内核 在编译高版本内核之前 xff0c 构建编译环境以及依赖包安装是肯定的 xff1b 但是 xff0c Cent
  • 内存对齐规则--图文详解

    在之前的C语言结构体的学习中 xff0c 遇到了内存对齐的问题 xff0c 之后在C 43 43 的类的学习中 xff0c 再次遇到了内存对齐问题 xff0c 所以我觉得有必要总结一下这个知识点 内存对齐规则 1 xff09 第一个成员在与
  • #define定义宏函数 的正确使用

    如何使用宏来定义一个自定义函数呢 xff1f 首先我们来看下面这段代码 define SQUARE x x x int main int a 61 5 printf 34 SQUARE a d n 34 SQUARE a 这个值为25 pr
  • C语言运算符优先级列表(超详细)

    本篇文章是对C语言中运算符的优先级进行了详细的分析介绍 xff0c 需要的朋友参考下 C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 数组下标 数组名 常量表达式 左到右 圆括号 表达式 xff09 函数名 形
  • 直接插入排序讲解及代码实现

    基本思想 每一步将一个待排序的元素 xff0c 按其排序码的大小 xff0c 插入到前面已经排好序的一组元素的合适位置上去 xff0c 直到元素全部插完为止 当插入第i i gt 61 1 个元素时 xff0c 前面的array 0 arr
  • 虚拟地址空间 及 页表 详解

    虚拟地址空间 进程地址空间由进程可寻址的虚拟内存组成 xff0c 内核允许进程使用这种虚拟内存的地址 每个进程都有一个 32位或64位 的平坦地址空间 xff0c 空间的大小取决于体系结构 xff08 平坦指的是地址空间范围是一个独立的连续
  • vector 模拟实现

    define CRT SECURE NO WARNINGS 1 include lt iostream gt include lt algorithm gt include lt assert h gt include lt Windows
  • C语言中的字节对齐

    一 什么是字节对齐 一个基本类型的变量在内存中占用n个字节 则该变量的起始地址必须能够被n整除 即 存放起始地址 n 61 0 那么 就成该变量是字节对齐的 对于结构体 联合体而言 这个n取其所有基本类型的成员中占用空间字节数最大的那个 内
  • Gson转换Date类型出错处理(com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate)

    用Gson做对象和Json字符串相互转换很方便 xff0c 但要把包含java util Date类型属性的对象转换成Json字符串 xff0c 如下面的代码 xff1a Gson gson 61 new Gson String p 61
  • orm框架sequelize的where条件接受动态参数传入

    在nodejs项目中 xff0c 接口会接收从前台传来的查询参数 xff0c 接口里面根据请求参数动态查询数据库 xff0c 例如分页参数等等 xff1b sequelize官方文档中并没有提及如何做 xff0c 不过可以利用sequeli
  • 判断单链表是否存在回环

    Author Victor LV Date 2016 9 6 10 14 Description 判断单链表是否有回环C 43 43 C 43 43 判断单链表是否存在回环 输入 list的头指针 返回 bool true表示有回环 fal