私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
私たちは話したいですシーケンステーブル逐次テーブルは線形テーブルの一種であるため、最初に線形テーブルについて説明する必要があります。
名前が示すように、線形テーブルはデータを線のように構成したテーブルです。
それは現実に並ぶことを考えれば分かります。
線形テーブルの特徴:
シーケンステーブルは段落を使用します物理アドレスは連続している保管ユニットは、人が隣り合って並んでいるようなものです。
データ要素を順番に格納する線形構造。通常は次を使用します。配列ストレージ。
アレイ上のデータの追加、削除、確認、変更を完了します。
シーケンス テーブルを自分で実装します (ストレージ int 型データ)。シーケンス テーブルをクラスとして使用し、いくつかのインターフェイスを実装します。メンバーメソッドデータの追加、削除、確認、変更を実現します。
public class SeqList {
private int[] elem;
private int usedSize;
// 默认构造方法
SeqList(){ }
// 将顺序表的底层容量设置为initcapacity
SeqList(int initcapacity){ }
// 新增元素,默认在数组最后新增
public void add(int data) { }
// 在 pos 位置新增元素
public void add(int pos, int data) { }
// 判定是否包含某个元素
public boolean contains(int toFind) { return true; }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int get(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void set(int pos, int value) { }
//删除第一次出现的关键字key
public void remove(int toRemove) { }
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() { }
}
デフォルトでは、最初に 10 個のデータスペースを開きます。
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
配列の長さを渡し、配列の長さを使用してスペースを空けます。
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
デフォルトでは、新しい要素は配列の最後に追加されます。
考慮すべき点:
public void add(int data) {
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
elem[usedSize++] = data;
}
/**
* 判断当前的顺序表是不是满的!
*
* @return true:满 false代表空
*/
private boolean isFull() {
return usedSize == elem.length;
}
pos 添字に要素を挿入します。
予防:
private boolean checkPosInAdd(int pos) throws PosIllegalException{
if(pos < 0 || pos > usedSize){
throw new PosIllegalException("位置不合法");
}
return true;
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
try{
if(checkPosInAdd(pos)){
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
for (int i = usedSize; i > pos ; i--) {
elem[i] = elem[i-1];
}
elem[pos] = data;
usedSize++;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
指定されたデータがシーケンス テーブルに含まれているかどうかを確認します。
直接ループして、見つかった場合は true を返し、見つからない場合は false を返します。
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
このシーケンス テーブル内の指定されたデータのインデックスを確認します。
直接ループして、-1 を返さずに戻り添字を見つけます。
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
pos 位置の要素を出力します。
予防:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
pos 位置要素を変更します。
予防:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
最初に出現したキーを削除します。
予防:
public void remove(int key) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == key){
for (int j = i; j < usedSize - 1; j++) {
elem[j] = elem[j + 1];
}
usedSize--;
}
}
}
ここでシーケンステーブルの長さを求めるとは、有効なデータの数、すなわちusedSizeを指す。
public int size() {
return usedSize;
}
シーケンステーブルの内容を空に設定します。
予防:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
ArrayList クラスは、順次リストを表すために Java で提供されます。
インターフェースの説明:
Java には、表に示す 3 つの構築メソッドが用意されています。
方法 | メソッドの使用方法の紹介 |
---|---|
配列リスト() | 引数なしの構築 |
ArrayList(コレクション<? extends E> c) | 他のコレクションを使用して ArrayList を構築する |
ArrayList(int 初期容量) | シーケンステーブルの初期容量を指定します |
提供される一般的なメソッドは、上で実装したものと似ています。
シーケンス テーブルの利点は次のとおりです。
演習へのリンクは以下のとおりです。
ヤン・フイ・トライアングル