JAVA単鎖表の例



一、概念:単一チェーンテーブルは順次アクセスする構造であり、i番目のデータ要素を探すためには、まずi-1番目のデータ要素を見つけなければならない.
二、利点:チェーンテーブルの一種で、メカニズムが柔軟で、用途が広い.スタック、キューなどの他のデータ構造の基礎に使用される配列に取って代わることができます.各データに頻繁に下付き文字でアクセスする必要がない限り、多くの配列の場所でチェーンテーブルで置き換えることができます.
三、参考<>
四、例:関係図は添付ファイルを参照してください.
      Link.java
 
package com.dataconstruct.link;

public class Link {
	public int iData;
	public double dData;
	public Link next;
	
	public Link(int id,double dd) {
		this.iData = id;
		this.dData = dd;
	}
	
	public void displayLink() {
		System.out.println("{" + this.iData + "," + this.dData + "}");
	}
}

 
LinkList.java
package com.dataconstruct.link;

public class LinkList {
	private Link first;

	public LinkList() {
		this.first = null;
	}

	public boolean isEmpty() {
		return (this.first == null);
	}

	public void insertFirst(int id, double dd) {
		Link newLink = new Link(id, dd);
		newLink.next = first;//newLink --> old first
		this.first = newLink;//first --> newLink
	}
	
	public Link deleteFirst() {
		Link temp = this.first;
		this.first = this.first.next;
		return temp;
	}
	
	public void displayList() {
		System.out.println("List (first --> last)");
		Link current = first;
		
		while(current != null) {
			current.displayLink();
			current = current.next;
		}
		System.out.println(" ");
	}
	     public double find(int key) {
       Link1 current = this.first;
       double result = 0;
     
       while (current != null) {
        if (current.iData == key) {
         return current.dData;
        } else {
         current = current.next;
        }
       }
       return result;
      }
     
      public Link delete(int key) {
       Link previous = this.first;
       Link current = this.first;
     
       while (current.iData != key) {
        if (current.next == null) {//last
         return null;
        } else {
         previous = current;
         current = current.next;
        }
       }
     
       if (current == first) {
        this.first = this.first.next;
       } else {
        previous.next = current.next;
       }
     
       return current;
     
      }
}

 
LinkListApp.java
package com.dataconstruct.link;

public class LinkListApp {
	public static void main(String[] args) {
		LinkList linkList = new LinkList();
		int begin = 10;
		int end = 70;
		int k = end/begin;
		double append = 0.99;
		
		for(int i = 0; i < k; i++) {
			linkList.insertFirst(begin, begin + append);
			begin += 10;
		}
		
		linkList.displayList();
		
		while(!linkList.isEmpty()) {
			Link alink = linkList.deleteFirst();
			alink.displayLink();
		}

		linkList.displayList();
	}
}

 
 
   ..........未完待续.....