数据结构:单链表操作之如何判断链表是否带环及相关操作
//判断链表是否有环
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.判断两个链表是否相交,若相交,求交点.(假设链表不带环) 两个指针同时指向两个链表,分别依次往后遍历链表到最后一个节点,如指针的值相同(即节点地址相同),反之没有交点. int IsCross(N ...
- 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)
目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作
项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047 效果图: 相关代码: test1 package com.mail;import ...
- 韩老师——数据结构与算法—单链表的生成及增删改查操作和常见关于链表的面试题java代码实现
话不多说直接上代码. public class SingleLinkedListDemo {public static void main(String[] args) {//测试HeroNode n ...
- 【数据结构】实现:合并两个升序的单链表,合并之后的链表后依旧有序
最近学习数据结构的算法的过程中,遇到了一个题,然后视频讲解的老师并没有给出答案(可能是我没找到),于是我就自己动手实现了一波.如有问题,请大家支点 核心思路 校验两个链表的长度,如果都为null,直接 ...
- 如何判断链表是否有环的存在
有环的定义是,链表的尾节点指向了链接中间的某个节点.比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D. #include <stdio.h>#define OK 1 ...
- 数据结构-链表带环问题
目录 一.如何判断一个链表是否有环? 二.如何证明fast和slow不会在回环中错过,永远都遇不上? 三.为什么slow走1步,fast走的是2步?能不能fast一次走3或者n步? (1)fast走3 ...
- Linux内核链表访问链表头指针,linux内核——链表结构分析
http://blog.csdn.net/tigerjibo/article/details/8299584 简单整理(使用linux3.0内核) 这里首先学习的是内核中一种抽象定义的双向链表,为了提 ...
- 链表(Linked List)之环形链表
原文地址:传送门 单向环形链表应用场景 Josephu(约瑟夫.约瑟夫环) 问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始 ...
最新文章
- 百家争鸣|国内外NLP领域学术界和工业界的牛人和团队
- 深入理解Java Class反射机制
- Linux学习进阶!!
- mysql unix_timestamp 格式化_FROM_UNIXTIME 格式化MYSQL时间戳函数_MySQL
- 混凝土墙开洞_满城混凝土柱子切割资质齐全
- Go Concurrency Patterns: Pipelines and cancellation
- docker ubuntu16.04镜像下安装cowrie蜜罐记录
- 用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我
- VC++中使用内存映射文件处理大文件
- 升级系统服务器出错,win10更新失败80070002错误怎么办
- KITTI数据集Raw Data与Ground Truth序列00-10的对应关系,以及对应的标定参数
- 系统分析与设计-敏捷迭代方法课后习题答案+学习笔记(答案见最后)
- JavaScript数组every方法
- URAL 1156 Two Rounds (DFS二分染色 + 分组背包)
- 使用VSCode中遇到的问题
- 将栅格影像转换为CAD/GIS矢量的3种方法
- 计算机器点游戏,24游戏计算器
- mysql_图形界面工具
- 指针详讲(一阶指针和二阶指针等指针各种用法详解)
- c语言 建立测井数据结构体,给定C语言的数据结构 struct T { int w; union T { char c; int i; dou...