//判断链表是否有环

int HasCircle(Node* pHead)
{
Node* low=pHead;
Node* fast=pHead;
    while(fast != NULL && fast->next != NULL)
    {
        low=low->next;
        fast=fast->next->next;
        if(low==fast) 
return 1;
}
    return 0;
}

时间复杂度:O(1)

//求环中快慢指针相遇节点
Node* HasCircle(Node* pHead)
{
Node* low=pHead;
Node* fast=pHead;
    if(pHead==NULL) 
return NULL;
    while(fast != NULL && fast->next != NULL)
    {
        low=low->next;
        fast=fast->next->next;
        if(low==fast) 
return low;
}
    return NULL;
}
//求环长度
int GetCircleLen(Node* pMeetNode)
{
Node* Node = pMeetNode->next;

int lenght = 1;
while(Node != pMeetNode )
{
lenght++;
Node = Node->next;
}
return lenght;
}

时间复杂度:O(1)

//求环的入口
Node* GetEnterNode(Node* pHead, Node* pMeetNode)
{
Node* start = pHead;
if(pHead == NULL)
return NULL;

while(start != pMeetNode)
{
start = start->next;
pMeetNode = pMeetNode->next;
}
return start;
}

时间复杂度:O(1)

数据结构:单链表操作之如何判断链表是否带环及相关操作相关推荐

  1. ]数据结构:单链表之判断两个链表是否相交及求交点(带环、不带环)

    1.判断两个链表是否相交,若相交,求交点.(假设链表不带环) 两个指针同时指向两个链表,分别依次往后遍历链表到最后一个节点,如指针的值相同(即节点地址相同),反之没有交点. int IsCross(N ...

  2. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

  3. java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作

    项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047 效果图: 相关代码: test1 package com.mail;import ...

  4. 韩老师——数据结构与算法—单链表的生成及增删改查操作和常见关于链表的面试题java代码实现

    话不多说直接上代码. public class SingleLinkedListDemo {public static void main(String[] args) {//测试HeroNode n ...

  5. 【数据结构】实现:合并两个升序的单链表,合并之后的链表后依旧有序

    最近学习数据结构的算法的过程中,遇到了一个题,然后视频讲解的老师并没有给出答案(可能是我没找到),于是我就自己动手实现了一波.如有问题,请大家支点 核心思路 校验两个链表的长度,如果都为null,直接 ...

  6. 如何判断链表是否有环的存在

    有环的定义是,链表的尾节点指向了链接中间的某个节点.比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D. #include <stdio.h>#define OK 1 ...

  7. 数据结构-链表带环问题

    目录 一.如何判断一个链表是否有环? 二.如何证明fast和slow不会在回环中错过,永远都遇不上? 三.为什么slow走1步,fast走的是2步?能不能fast一次走3或者n步? (1)fast走3 ...

  8. Linux内核链表访问链表头指针,linux内核——链表结构分析

    http://blog.csdn.net/tigerjibo/article/details/8299584 简单整理(使用linux3.0内核) 这里首先学习的是内核中一种抽象定义的双向链表,为了提 ...

  9. 链表(Linked List)之环形链表

    原文地址:传送门 单向环形链表应用场景 Josephu(约瑟夫.约瑟夫环) 问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始 ...

最新文章

  1. 百家争鸣|国内外NLP领域学术界和工业界的牛人和团队
  2. 深入理解Java Class反射机制
  3. Linux学习进阶!!
  4. mysql unix_timestamp 格式化_FROM_UNIXTIME 格式化MYSQL时间戳函数_MySQL
  5. 混凝土墙开洞_满城混凝土柱子切割资质齐全
  6. Go Concurrency Patterns: Pipelines and cancellation
  7. docker ubuntu16.04镜像下安装cowrie蜜罐记录
  8. 用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我
  9. VC++中使用内存映射文件处理大文件
  10. 升级系统服务器出错,win10更新失败80070002错误怎么办
  11. KITTI数据集Raw Data与Ground Truth序列00-10的对应关系,以及对应的标定参数
  12. 系统分析与设计-敏捷迭代方法课后习题答案+学习笔记(答案见最后)
  13. JavaScript数组every方法
  14. URAL 1156 Two Rounds (DFS二分染色 + 分组背包)
  15. 使用VSCode中遇到的问题
  16. 将栅格影像转换为CAD/GIS矢量的3种方法
  17. 计算机器点游戏,24游戏计算器
  18. mysql_图形界面工具
  19. 指针详讲(一阶指针和二阶指针等指针各种用法详解)
  20. c语言 建立测井数据结构体,给定C语言的数据结构 struct T { int w; union T { char c; int i; dou...

热门文章

  1. nginx+keepalived高可用性负载均衡
  2. 分布式缓存的25个优秀实践与线上案例 done
  3. 移动APP怎样保存用户password
  4. 使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)
  5. node08-express
  6. iOS应用如何支持IPV6
  7. C++11 多线程 基础
  8. FxCAD 实验三 实现对象的【属性】事件
  9. 如何将markdown转换为wxml
  10. 第四次作业类测试代码+036+吴心怡