`

如何判断一个链表是否有环路

 
阅读更多

转自

http://www.iteye.com/topic/1114110

 

  1. public static boolean hasLoop(Node root) {  
  2.     r1 = root.clone();  
  3.                r2 = root.clone();  
  4.                while(true){  
  5.                    if(r1.hashnext){r1 = r1.next();}else{break;}  
  6.                    if(r1.hashnext){r1 = r1.next();}else{break;}  
  7.   
  8.                    if(r2.hashnext){r2 = r2.next();}else{break;}  
  9.   
  10.                    if(r1 == r2 ) return true;  
  11.   
  12.                }  
  13.   
  14.   
  15.     return false;  
  16. }  

分享到:
评论

相关推荐

    关于有环链表的问题

    在一个有环链表中,至少存在一个节点的指针不是指向链表中的下一个节点而是指向链表中的某个先前节点,从而形成了一个闭合的环路。 #### 二、判断链表中是否存在环 判断一个链表中是否存在环可以通过“快慢指针”的...

    基于邻接链表构建的有向图

    有向图是图论中的一个重要概念,它是由顶点集合V和边集合E组成的,其中每条边都有明确的方向,即从一个顶点指向另一个顶点。在本课程设计中,我们将采用邻接链表的方式来表示和操作有向图。邻接链表是一种常用的数据...

    欧拉路径和环路的产生程序

    而邻接表则是一个链表结构,为每个顶点维护一个边的列表,更适合于稀疏图(边的数量远小于顶点数量的平方)。 接下来,寻找欧拉路径或环路通常采用深度优先搜索(DFS)或广度优先搜索(BFS)。对于有向图,如果每条...

    操作系统课程设计 死锁环路检测

    通过检测是否存在环路来判断是否存在死锁。 在吉林大学的操作系统课程设计中,可能需要实现一个图形界面,用户可以通过界面输入各个进程的资源需求和当前状态,程序通过分析这些信息来检测是否存在死锁环路。这可能...

    数据结构笔试面试汇总

    #### 一、如何判断一个单向链表是否有环路? **题目背景:** 在面试或笔试过程中,经常会遇到关于链表的问题,其中一个经典问题是如何判断一个单向链表中是否存在环路。题目要求算法在处理时使用的额外内存为常数...

    数据结构课程设计_题目1

    4. 相交链表判断:给定两个链表的头指针,判断它们是否相交,若相交则返回相交节点的指针,否则返回NULL。相交判断基于节点指针的比较,而非节点值。 为了实现这些功能,你需要对链表的插入、删除、遍历等基本操作...

    c语言数据结构上机,最小生成树,哈夫曼编码,平衡二叉树,链表等

    循环链表最后一个节点指回第一个节点。链表的主要操作包括插入、删除和遍历。 在提供的文件列表中,我们可以看到一些可能的项目文件,如Project.cpp可能是源代码文件,Address、Sort、AVLTree、Calculater、MTree...

    用C语言实现死锁检测.rar_c语言判断死锁_deadlock_死锁_死锁 检测_死锁c语言

    当找到一个环路时,即可判断发生了死锁。 以下是一个简单的C语言实现思路: 1. 定义进程和资源的数据结构,如进程结构体包含进程ID、已占资源列表和请求资源列表。 2. 初始化资源分配矩阵,根据输入填充矩阵。 3. ...

    java代码-寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 Id。现在请实现一个办法寻找该链表的头节点。 PS. 考虑一下链表环状,以及节点不在链表内等异常情况,出现异常时,打印异常消息即可。

    在这个问题中,我们需要找到一个特殊类型的链表的头节点。链表中的每个节点包含两个属性:`id`和`nextId`,其中`nextId`表示指向下一个节点的`id`。这个问题的关键在于处理链表的环状结构和可能的异常情况。 首先,...

    数据结构集合版 -链表,树,图

    数据域存储实际的数据,而指针域指向下一个节点。单链表不像数组那样有固定的索引顺序,而是通过链接节点来表示顺序。这使得链表在插入和删除操作上比数组更具优势,因为无需移动大量元素。然而,访问链表中的特定...

    算法导论生成一个100个点3000条边的有向无环图实验1-4

    而邻接表则是一个链表数组,每个顶点对应一个链表,链表中的节点代表指向该顶点的边。这两种数据结构各有优缺点,适用于不同的场景。 总之,"算法导论生成一个100个点3000条边的有向无环图实验1-4"涉及到图论、有向...

    MangoDowner#clear-leetcode#面试题02.08.环路检测1

    面试题 02.08. 环路检测原题链接:面试题 02.08. 环路检测和本题142. 环形链表 II相同快慢指针解题思路1、先用快慢指针找到相遇点2、然后一个从

    链表.txt

    循环链表的特点是最后一个节点的指针指向头节点,形成一个闭合环路。 ### 链表操作 #### 创建链表 链表可以通过逐个插入节点的方式来创建。例如,在给定代码中,`CreateList_H` 函数通过用户输入来创建链表。 ```...

    图的遍历(邻接矩阵、邻接链表建图,深搜、广搜遍历,生成最小生成树)

    邻接矩阵是一个二维数组,其中的每个元素代表两个顶点之间是否存在边。如果顶点i和j之间有边,则矩阵中的[i][j]位置的值为1;反之,若无边则为0。这种表示法适用于稠密图,即边的数量接近于所有顶点对的总数。邻接...

    图论中有关树的判定(可直接画图)

    1. **连通性**:判断一个图是否为树,首先要看它是否连通。如果图中任意两个顶点都能通过边相连,且不存在环路,那么这个图就是一棵树。 2. **度数性质**:树的度数性质表明,一棵有n个顶点的树,其边数一定是n-1。...

    数据结构笔试面试题目汇总

    本篇文章将围绕链表这一核心数据结构,讨论如何判断单向链表是否存在环路,并提供一种算法实现。此外,还将探讨C语言中的指针操作,通过标准库函数的源代码来加深理解。 1. **链表环路检测**: 在单向链表中,环路...

    数据结构课程实验报告(全部)

    3. **循环链表**:循环链表是链表的一种变体,最后一个元素的指针指向链表的第一个元素,形成一个循环。这使得遍历更加方便,例如报告中的“单向循环链表”。 4. **树**:树是一种非线性数据结构,模拟了自然界中的...

Global site tag (gtag.js) - Google Analytics