Javaデータ構造の最初のカスタム独自のチェーンテーブル構造クラス


カスタムチェーンテーブルクラス
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();
	}
	
	
}