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();
}
}
..........未完待续.....