在百度怎么免费制作网站wordpress区别
web/
2025/9/29 22:05:17/
文章来源:
在百度怎么免费制作网站,wordpress区别,一键生成器,和国外做贸易用什么网站链表有环的情况一般是链表的尾指向前面的节点而不是null#xff0c;如head-node1-node2-node3-node4-tail-node2#xff0c;该链表存在环。判断环是否存在可以借助两个指针#xff0c;一个指针每次迭代只移动一步#xff0c;第二个指针每次迭代移动… 链表有环的情况一般是链表的尾指向前面的节点而不是null如head-node1-node2-node3-node4-tail-node2该链表存在环。判断环是否存在可以借助两个指针一个指针每次迭代只移动一步第二个指针每次迭代移动两步。如果存在环两个指针最终一定会相撞的即指向同一个节点。其它情况则说明环不存在比如两个指针中的任一个指向null。代码如下Node.javapublic class Node {
public char data;
public Node next;
public Node(char data, Node next)
{
this.data data;
this.next next;
}
public Node(char data)
{
this.data data;
this.next null;
}
}LinkedListLoop.javaimport java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LinkedListLoop {
private Node head;
private Node tail;
public LinkedListLoop() {
this.head null;
this.tail null;
}
public boolean isEmpty() {
return (this.head null);
}
public void CreateLinkedList() {
BufferedReader br new BufferedReader(new InputStreamReader(System.in));
String str null;
Node node null;
char data;
try {
str br.readLine();
}catch (IOException e) {
e.printStackTrace();
}
for(int i0; istr.length(); i) {
data str.charAt(i);
if(data ! ) {
node new Node(data);
if(i0) {
head node;
tail node;
}
else {
tail.next node;
tail node;
}
}
}
}
public Node nodeAt(int i) {
Node node head;
int pos 0;
while(node!null) {
if(posi) break;
pos;
node node.next;
}
return node;
}
public void createLoop(int i) {
Node node nodeAt(i);
if(nodenull) return;
tail.next node;
}
public void destroyLoop() {
tail.next null;
}
public boolean hasNode()
{
Node p1 head;
Node p2 head;
while(p1!null) {
p1 p1.next;
p2 p2.next;
if(p2null) return false;
p2 p2.next;
if(p2null) return false;
if(p2 p1) return true;
}
return false;
}
}TestDriver.javapublic class TestDriver {
public static void main(String arg[]) {
LinkedListLoop forTest new LinkedListLoop();
forTest.CreateLinkedList();
if(forTest.hasNode()) System.out.println(It has loop!);
else System.out.println(It has no loop.);
forTest.createLoop(3);
if(forTest.hasNode()) System.out.println(It has loop!);
else System.out.println(It has no loop.);
forTest.destroyLoop();
if(forTest.hasNode()) System.out.println(It has loop!);
else System.out.println(It has no loop.);
}
}测试例子 转载于:https://blog.51cto.com/5372221/1312275
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84110.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!