相关疑难解决方法(0)

如何检测链表中的循环?

假设您在Java中有一个链表结构.它由节点组成:

class Node {
    Node next;
    // some user data
}
Run Code Online (Sandbox Code Playgroud)

每个节点都指向下一个节点,最后一个节点除外.假设列表有可能包含一个循环 - 即最终的节点,而不是具有空值,具有对列表中的一个节点的引用.

什么是最好的写作方式

boolean hasLoop(Node first)
Run Code Online (Sandbox Code Playgroud)

true如果给定的Node是带循环的列表的第一个,它将返回,false否则?你怎么写,这需要一个恒定的空间和合理的时间?

这是一个循环列表的图片:

替代文字

java algorithm linked-list data-structures

413
推荐指数
9
解决办法
16万
查看次数

如何确定链接列表是否只使用两个内存位置进行循环

有没有人知道一个算法来查找链表是否只使用两个变量来遍历列表.假设您有一个链接的对象列表,它与哪种类型的对象无关.我在一个变量中有一个指向链表头部的指针,我只有一个其他变量来遍历列表.

所以我的计划是比较指针值以查看是否有任何指针相同.该列表的大小有限,但可能很大.我可以将两个变量都设置为头部,然后用另一个变量遍历列表,总是检查它是否等于另一个变量,但是,如果我确实打了一个循环,我将永远不会离开它.我认为它与遍历列表和比较指针值的不同速率有关.有什么想法吗?

algorithm loops linked-list cycle

44
推荐指数
3
解决办法
6万
查看次数

标签 统计

algorithm ×2

linked-list ×2

cycle ×1

data-structures ×1

java ×1

loops ×1