java 链表实现(测试是否有环)
答案:1 悬赏:10
解决时间 2021-02-08 10:08
- 提问者网友:涼初透
- 2021-02-07 21:42
java 链表实现(测试是否有环)
最佳答案
- 二级知识专家网友:而你却相形见绌
- 2021-02-07 23:08
package com.bb.bbs; import java.util.ArrayList; class Node{ Node next; String data;//下一节点 public static int maxs = 0;//getSize() 最大数量 public static int maxg = 0;//getArray()最大数量 public static int maxp = 0;//printNode()打印节点最大数量 public static int maxc = 0;//contains()最大数量 public Node(String data){ this.data = data; } public void addNode(Node node){ if(this.next==null){ this.next = node; }else{ this.next.addNode(node); } } public boolean removeNode(Node previous,String data){ if(this.data.equals(data)){ previous.next = this.next; return true; }else{ return this.next.removeNode(this, data); } } public boolean contains(String data){ maxc++; if(maxc==10){ return false; } if(this.data.equals(data)){ return true; } if(this.next == null){ return false; }else{ return this.next.contains(data); } } public void printNode(){ maxp++; if(maxp==10){ return; } if(this.next!=null){ System.out.println(this.next.data); this.next.printNode(); } } public Node findNode(String data){ if(this.data.equals(data)){ return this; }else{ return this.next.findNode(data); } } public int getSize(int currentNum){ maxs++; if(maxs==10){ return 10; } if(this!=null){ currentNum++; } if(this.next!=null){ return this.next.getSize(currentNum); }else{ return currentNum; } } public void getArray(ArrayList tArrayList){ maxg++; if(maxg==10){ return; } tArrayList.add(this.data); if(this.next!=null){ this.next.getArray(tArrayList); } } } class Link{ Node root; public void add(String data){ if(data==null){ return; } if(root ==null){ root = new Node(data); }else{ root.addNode(new Node(data)); } } public boolean remove(String data){ if(root.data.equals(data)){ root = root.next; return true; }else{ return this.root.next.removeNode(root, data); } } public boolean contains(String data){ if(root.data.equals(data)){ return true; }else{ return root.contains(data); } } public void print(){ if(root!=null){ System.out.println(root.data); root.printNode(); } } public Node find(String data){ if(contains(data)){ if(this.root.data.equals(data)){ return root; }else{ return root.findNode(data); } } return null; } public int size(){ if(root.next ==null){ return 1; }else{ return root.next.getSize(1); } } public void getArray(ArrayList tArrayList){ if(root!=null){ tArrayList.add(root.data); } if(root.next!=null){ root.next.getArray(tArrayList); } } } public class LinkList { public static void main(String args[]){ //1、增加链表节点 Link tLink = new Link(); tLink.add("A"); tLink.add("B"); tLink.add("C"); tLink.add("D"); tLink.print(); //2、形成环 A->B->C->A->B->C->A->B->C...... 无限循环 Node fnodeA = tLink.find("A"); Node fnodeC = tLink.find("C"); //如果有一个为空 if(fnodeA==null || fnodeC==null){ System.out.println("没有找到元素!"); fnodeC.next = fnodeA;//出现环 } int linksize = tLink.size(); System.out.println("链表大小为:"+linksize); ArrayList tArrayList = new ArrayList(); tLink.getArray(tArrayList); for(Object o : tArrayList){ String str = o.toString(); System.out.println(str); } boolean flag = false; int circleLen = 0; //检验 "环" 是否存在 for(int i=0;i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯