
シーケンス テーブルとは何ですか?どのような構造になっているのでしょうか?
シーケンステーブルは、連続した物理アドレスを持つストレージユニットのセグメントに順番に格納される線形構造であり、一般的にはアレイストレージが使用されます。アレイ上のデータの追加、削除、確認、変更を完了します。
(学習ビデオ共有: java ビデオ チュートリアル)
シーケンス テーブルは次のように分かれています:
静的シーケンス テーブル: 固定長配列ストレージを使用します。
動的シーケンス テーブル: 動的にオープンされた配列ストレージを使用する
静的シーケンス テーブルは、保存する必要があるデータ量がわかっているシナリオに適しています。
静的シーケンステーブルの固定長配列ではNが固定的に大きくなり、空きすぎると無駄になりますし、空きすぎると足りなくなります。
シーケンシャル テーブルの実装
まず、シーケンス テーブルの長さを指定する必要があります。リストに要素を挿入したい場合は、まず最初の数値を位置 0 に挿入する必要があります。位置が 0 の場合、カウントしないと、位置 1 以降に直接挿入することはできません。位置 0、1、および 2 にデータがあり、それを位置 0 または 1 に挿入したい場合は、シーケンス テーブルを逆方向に走査して、前のデータを 1 つ前に移動する必要があります。

追加:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | public class SepList {
public int[] val;
public int size;
public SepList(){
this.val = new int[5];
}
public SepList(int ret){
this.val = new int[ret];
}
public void addVal(int pos,int val){
if (this.val.length == this.size) return ;
if (pos < 0 || pos > this.size) return ;
for (int i = this.size; i >= pos; i--){
this.val[i + 1] = this.val[i];
}
this.val[pos] = val;
this.size++;
}
public void disPlay(){
for (int i = 0; i < this.size; i++){
System.out. print (this.val[i] + " " );
}
System.out.println();
}
public static void main(String[] args) {
SepList myList = new SepList();
myList.addVal(0,10);
myList.disPlay();
}
}
10
|
ログイン後にコピー
複数のデータを挿入する場合は、メソッドを呼び出すだけです。
例:
1 2 3 4 5 6 7 8 9 | myList.addVal(0,10);
myList.addVal(1,20);
myList.addVal(2,30);
myList.addVal(3,40);
myList.addVal(4,50);
myList.disPlay();
10 20 30 40 50
|
ログイン後にコピー
この時点での注文 テーブルがいっぱいでさらに挿入したらどうなりますか?
1 2 3 4 5 6 7 8 9 10 11 | myList.addVal(0,10);
myList.addVal(1,20);
myList.addVal(2,30);
myList.addVal(3,40);
myList.addVal(4,50);
myList.addVal(5,60);
myList.addVal(6,70);
myList.disPlay();
10 20 30 40 50
|
ログイン後にコピー
なぜ同じままでエラーが報告されないのですか?これは、add 関数に入った時点で順序表がいっぱいであると判断し、いっぱいの場合は直接 print 関数にジャンプするためです。エラーは報告されません。この時点で、インクリメント関数が記述されます。
Check

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
public boolean contains(int toFind){
for (int i = 0; i < this.size; i++){
if (toFind == this.val[i]){
return true;
}
}
return false;
}
public int search(int toFind){
for (int i = 0; i < this.size; i++){
if (toFind == this.val[i]){
return i;
}
}
return -1;
}
public int getPos(int pos){
if (pos < 0 || pos > this.size) return -1;
for (int i = 0; i < this.size; i++){
if (this.val[i] == this.val[pos]){
return this.val[pos];
}
}
return -1;
}
boolean flag1 = myList.contains(10);
boolean flag2 = myList.contains(60);
System.out.println(flag1);
System.out.println(flag2);
int ret = myList.search(10);
int ret1 = myList.search(50);
System.out.println(ret);
System.out.println(ret1);
int ret2 = myList.getPos(0);
int ret3 = myList.getPos(4);
System.out.println(ret2);
System.out.println(ret3);
true
false
0
4
10
50
|
ログイン後にコピー
Change
pos 位置に対応するデータを直接検索し、新しいデータを割り当てます大丈夫です

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public void remove(int pos,int val){
if (pos < 0 || pos > this.size){
return ;
} else {
this.val[pos] = val;
}
}
myList.remove(2,3);
myList.remove(3,4);
myList.disPlay();
10 20 3 4 50
|
ログイン後にコピー
削除
指定されたデータを削除した後、後続のデータを上書きするだけです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public void delVal(int key){
int i,j = 0;
for (i = 0; i < this.size; i++){
if (this.val[i] == key){
j = i;
break ;
}
}
for (i = j; i < this.size - 1; i++){
this.val[i] = this.val[i + 1];
}
this.size--;
}
myList.delVal(10);
myList.delVal(50);
myList.disPlay();
20 30 40
|
ログイン後にコピー
関連する推奨事項: Java 入門チュートリアル
以上がJavaによるシーケンステーブルの追加、削除、問い合わせ、変更を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。