データ構造-チェーンテーブルの概要
4441 ワード
JAvaのチェーンテーブル
チェーンテーブルは、さまざまなデータとオブジェクトを置くためのコンテナです.1本の果樹といえば、たくさんの果物が実っているので、容器を入れなければなりません.このとき、私たちが必要とするかごはjavaのlistになりたいと思っています.果物はいろいろなデータやオブジェクトに相当します.
JAvaの具体的な実装はカプセル化されており、配列キューよりも挿入と削除の面で優位に立っており、秩序があるという利点もあります.
それでも柔軟性が足りない場合が多いのは、遍歴構造でチェーンテーブルの要素にアクセスするのは遅いのではないかという欠点です.チェーンテーブルのヘッダから必要な要素までクエリーする必要があるので、チェーンテーブルは遍歴に使用されます.
チェーンテーブルは、以前に学んだキューや配列とは異なり、メモリに連続的に格納されていない非線形です.
一部のC++を学んだことがあるので、中先生はチェーンテーブルを紹介したことがあります.この2つの異なるプログラミング言語は時々似ていると思います.考えと大まかな枠組みはあまり違わない.違いはC++がポインタで実現され、javaにはポインタがありません.
また、削除部分を行う場合、C++には構造関数がありメモリの解放が行われますが、javaではこれらを管理する必要はありません.javaのゴミ回収メカニズムは自然に私たちにこのことをしてくれます.
チェーンテーブルと呼ばれる以上、自然にチェーンと関係があり、チェーンのように、実際のリンクはなく、アドレスの指向にすぎません.
チェーンテーブルについては、プログラムを書くとき、頭の中で想像するだけではいけません.それを描いて、具体化して、画像化して、よく理解していることがわかります.
チェーンテーブルの方法についてはここではあまり言わず、コードで直接実現します.
実行結果:
student:0 student:1 student:2 student:3 student:4 student:5 student:6 student:7 student:8 student:9 astudent:0 student:1 bstudent:2 student:3 student:4 student:4 student:5 student:6 student:7=============除去するデータ:astudent:0 student:1 bstudent:2 student:3 student:4 student:4 student:5 student:6 student:7 student:8
チェーンテーブルは、さまざまなデータとオブジェクトを置くためのコンテナです.1本の果樹といえば、たくさんの果物が実っているので、容器を入れなければなりません.このとき、私たちが必要とするかごはjavaのlistになりたいと思っています.果物はいろいろなデータやオブジェクトに相当します.
JAvaの具体的な実装はカプセル化されており、配列キューよりも挿入と削除の面で優位に立っており、秩序があるという利点もあります.
それでも柔軟性が足りない場合が多いのは、遍歴構造でチェーンテーブルの要素にアクセスするのは遅いのではないかという欠点です.チェーンテーブルのヘッダから必要な要素までクエリーする必要があるので、チェーンテーブルは遍歴に使用されます.
チェーンテーブルは、以前に学んだキューや配列とは異なり、メモリに連続的に格納されていない非線形です.
一部のC++を学んだことがあるので、中先生はチェーンテーブルを紹介したことがあります.この2つの異なるプログラミング言語は時々似ていると思います.考えと大まかな枠組みはあまり違わない.違いはC++がポインタで実現され、javaにはポインタがありません.
また、削除部分を行う場合、C++には構造関数がありメモリの解放が行われますが、javaではこれらを管理する必要はありません.javaのゴミ回収メカニズムは自然に私たちにこのことをしてくれます.
チェーンテーブルと呼ばれる以上、自然にチェーンと関係があり、チェーンのように、実際のリンクはなく、アドレスの指向にすぎません.
チェーンテーブルについては、プログラムを書くとき、頭の中で想像するだけではいけません.それを描いて、具体化して、画像化して、よく理解していることがわかります.
チェーンテーブルの方法についてはここではあまり言わず、コードで直接実現します.
package ;
/*
* Node
*/
public class Node {
// Node next
Node next;
// Object
Object data;
}
package ;
public class MyLink {
private Node root;//
private Node tail;//
private int length;//
public static void main(String [] args){
// MyLink
MyLink link = new MyLink();
for(int i = 0;i<10;i++){
link.add("student:"+i);
}
for(int i = 0;i<10;i++){
System.out.println(link.get(i));
}
link.insert(0, "a");
link.insert(3,"b");
for(int i = 0;i<10;i++){
System.out.println(link.get(i));
}
System.out.println("========");
System.out.println(" : "+link.remove(0));
for(int i = 0;i<10;i++){
System.out.println(link.get(i));
}
}
/**
* ,
* @param obj
*/
public void add(Object obj){
// Node
Node node = new Node();
// date
node.data=obj;
// ,
if(root==null){
root=node;
tail=node;
}else{
// , node
tail.next=node;
tail=node;
}
// length+1
length++;
}
/*
*
*/
public Object get(int index){
//
if(index<0||index>=length){
return new java.lang.ArrayIndexOutOfBoundsException(" !");
}
// , index , data
Node temp=root;
for(int i=0;i<index;i++){
temp=temp.next;
}
return temp.data;
}
/*
* ,
*/
public Object remove(int index){
//
if(index<0||index>=length){
return new java.lang.ArrayIndexOutOfBoundsException(" !");
}
// , ,
if(length==1){
length--;
Object obj=root.data;
root=null;
return obj;
}
length--;
//
if(index==0){
Object obj=root.data;
root=root.next;
return obj;
}
Node temp = root;
//
for(int i=0;i<index-1;i++){
temp=temp.next;
}
Object obj=temp.next.data;
temp=temp.next.next;
return obj;
}
public void insert(int index ,Object obj){
if(index<0||index>=length){
//
throw new java.lang.ArrayIndexOutOfBoundsException(" !");
}
Node node=new Node();
node.data=obj;
//
if(index==0){
node.next=root;
root=node;
length++;
}
Node temp=root;
//
for(int i=0;i<index-1;i++){
temp=temp.next;
}
Node temp1=new Node();
temp1=temp.next;
temp.next=node;
node.next=temp1;
length++;// 1
}
}
実行結果:
student:0 student:1 student:2 student:3 student:4 student:5 student:6 student:7 student:8 student:9 astudent:0 student:1 bstudent:2 student:3 student:4 student:4 student:5 student:6 student:7=============除去するデータ:astudent:0 student:1 bstudent:2 student:3 student:4 student:4 student:5 student:6 student:7 student:8