JAVAは一方向チェーンテーブルの削除操作を実現


コンセプト:
たんほうこうチェーンテーブル
)はチェーンテーブル
チェーンテーブルのリンク方向が一方向であることを特徴とし、チェーンテーブルへのアクセスはヘッドから順番に読み出す.チェーンテーブルはポインタを使用しています
構築するリスト;チェーンテーブルは1つのノードで組み立てられているので、ノードリストとも呼ばれます.各ノードにはポインタメンバー変数があります
リスト内の次のノードを指します.
リストはノード
構成として、headポインタは、最初にヘッダノードとなり、最後にnuLLを指すポインタに終了する.
ノード情報と次のノードオブジェクトを格納するノードクラス.
public class Node {
	 //        
	public String data; //      
	public Node next; //        

	public Node(String data) { //             
		this.data = data;
	}

	public void add(Node node) { //     
		if (this.next == null) { //          ,        next    
			this.next = node;
		} else { //           ,    next
			this.next.add(node);
		}
	}

	public void print() { //     
		if (this.next != null) {
			System.out.print(this.data + "-->");
			this.next.print();
		} else {
			System.out.print(this.data + "
"); } } public boolean search(String data) { // if (this.data.equals(data)) { return true; } if (this.next != null) { return this.next.search(data); } else { return false; } } public void delete(Node previous, String data) { // if (this.data.equals(data)) { previous.next = this.next; } else { if (this.next != null) { this.next.delete(this, data); } } } }

チェーンテーブルクラスは、チェーンテーブルを操作する方法を提供します.
public class Link {

	private Node root; //      

	public void addNode(String data) { //         
		Node newNode = new Node(data); //       
		if (this.root == null) { //      ,           
			this.root = newNode;
		} else { //       ,             
			this.root.add(newNode);
		}
	}

	public void print() { //        
		if (root != null) { //               
			this.root.print();
		}
	}

	public boolean searchNode(String data) { //              
		return root.search(data); //            
	}

	public void deleteNode(String data) { //              
		if (root.data.equals(data)) { //       
			if (root.next != null) {
				root = root.next;
			} else {
				root = null;
			}
		} else {
			root.next.delete(this.root, data);
		}
	}
}

チェーンテーブルを操作して削除
public class LinkDemo {
	public static void main(String[] args) {
		Link l = new Link();
		l.addNode("A");
		l.addNode("B");
		l.addNode("C");
		l.addNode("D");
		System.out.println("   :");
		l.print();
		String searchNode = "B";
		System.out.println("    :" + searchNode);
		String result = l.searchNode(searchNode) ? "  !" : "   !";
		System.out.println("    :" + result);
		System.out.println("    :" + searchNode);
		l.deleteNode(searchNode);
		System.out.println("        :");
		l.print();
	}
}