Java怎么判断一个链表有环
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了Java怎么判断一个链表有环,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。链表是常用的几种数据结构其中一个。链表结构
千家信息网最后更新 2025年01月20日Java怎么判断一个链表有环
这篇文章主要介绍了Java怎么判断一个链表有环,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
链表是常用的几种数据结构其中一个。链表结构可以充分利用计算机内存空间,实现灵动的内存动态管理。本篇文章将通过 Java 代码展示为大家介绍如何判断一个链表是个有环链表,以及有环链表的入口点。
1.首先定义一个单链表;
var ,next,是单链表中的属性,分别表示节点值和下一个节点的指向;
代码如下:
//定义一个链表 class List{ public int var; public List next;//有参构造 public List(int var) { this.var = var; }//无参构造 public List() { } //创建一个带环的链表 public List Create(){ List a = new List(1); List b = new List(2); List c = new List(3); List d = new List(4); List e = new List(5); List f = new List(6); a.next = b; b.next =c; c.next = d; d.next =e; e.next = f; f.next =d; return a; }
2.编写判断是否存在环
如果存在,则返回这个节点,如果不存在则返回null,定义快慢指针,如果快的追上了慢的指针,那么这个链表必存在环,如果没有追上,或者都为null,那么这个链表没有环;
代码如下:
//判断是否有环,并找到相遇的节点public List MeetingNode(List node){ List slow = new List(); List fast = new List(); if(node==null) return null; slow = node.next; if(slow==null) return null; fast=slow.next; while (fast!=null && slow!=null){ if (fast==slow){ return fast; //fast追上了slow,确定是一个有环的链表; } slow = slow.next; fast = fast.next; if(fast!=null){ fast = fast.next; } } return null;}
3.寻找入口节点
先让快指针先走环的节点的个数步,在让慢指针开始走,如果两个指针相遇的话,那么相遇的节点必然是环的入口节点
代码如下:
public List Enterdear(List node){ if(node==null) return null; if(MeetingNode(node)==null) return null; int count =1; List res2; List res1 = MeetingNode(node); while (res1.next!=MeetingNode(node)){ res1 = res1.next; count++; } res1 = node; for(int i = 0;imain函数测试;
public class Deom { public static void main(String[] args) { List SB = new List(); List res = SB.Create(); List dear= SB.Enterdear(res); System.out.println(dear.var); }}
感谢你能够认真阅读完这篇文章,希望小编分享的"Java怎么判断一个链表有环"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
节点
指针
代码
篇文章
入口
内存
结构
环链
两个
个数
价值
兴趣
函数
动态
同时
属性
常用
必然
快慢
指向
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关于网络安全教育的现代诗
软件开发工程需要资质吗
运用人工智能技术的网络安全软件
唐山软件开发报价
高校网络安全预算占比
超威服务器bmc密码
软件开发些啥语言
查看指定数据库语法
专注学软件开发
零代码配置化软件开发蛛网时代
云解互联网科技是干啥的
计算机等级网络技术四级
主机服务里没有数据库服务
数据库改 混合模式
人口数据库是什么样
软件开发合同宽限期
以scott登录数据库
湖南江峰互联网科技有限公司
徐汇区特殊软件开发代理品牌
警车监控系统软件开发
长沙ibm服务器维修点
greenplum数据库锁
为什么服务器6区进不去
j4125能装数据库吗
吉林通讯软件开发服务参考价格
软件开发合同免费版
服务器扩展三个卡
网评基地与网络安全
服务器信息管理器
网络安全技术性问题