Javaデータ構造の最初のカスタム独自のチェーンテーブル構造クラス
2954 ワード
カスタムチェーンテーブルクラス
「チェーンテーブルの使用をテスト」--追加、検索、削除
package com.git.base.link;
/**
*
* <p>Title: LinkNode.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2016</p>
* <p>Company: Sage</p>
* @author
* @date 2016 4 28 10:36:19
* @version 1.0
*/
public class LinkNode {
private Node root;//
public void addNode(String data){
Node node = new Node(data);
if(this.root==null){// null
this.root =node;
}else{// ,
this.root.addNode(node);
}
}
public boolean contains(String data){
if(this.root.data.equals(data)){//
return true;
}else{// , !
return this.root.contains(data);
}
}
public void deleteNode(String data){
if(contains(data)){//
if(this.root.data.equals(data)){// --
this.root = this.root.next;
}else{// --
root.deleteNode(data);
}
}
}
public void printNode(){
if(this.root !=null){
this.root.printNode();
}
}
public class Node{
private String data;//
private Node next;//
Node(String data){
this.data = data;
}
public void printNode() {
System.out.println("data: "+this.data);
if(this.next!=null){
this.next.printNode();
}
}
//
public void addNode(Node node){
if(this.next == null){// ,
this.next=node;
}else{// ,
this.next.addNode(node);
}
}
//
public boolean contains(String data){
if(this.next ==null){
return false;
}else{
if(this.next.data.equals(data)){
return true;
}else{
return this.next.contains(data);
}
}
}
//
public void deleteNode(String data){
if(this.next.data.equals(data)){//
this.next =this.next.next;// null null
}else{
this.next.deleteNode(data);
}
}
}
}
「チェーンテーブルの使用をテスト」--追加、検索、削除
package com.git.base.link;
import com.git.base.link.LinkNode.Node;
/**
*
* <p>Title: LinkTest.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2016</p>
* <p>Company: Sage</p>
* @author
* @date 2016 4 28 11:16:06
* @version 1.0
*/
public class LinkTest {
public static void main(String[] args) {
LinkNode link = new LinkNode();
link.addNode("A");
link.addNode("B");
link.addNode("C");
link.addNode("D");
link.addNode("E");
link.printNode();
System.out.println(link.contains("D"));
System.out.println("=========");
link.deleteNode("B");
link.printNode();
System.out.println("=========");
link.deleteNode("A");
link.printNode();
}
}