Senarai linear ialah jujukan terhingga bagi n elemen data dengan ciri yang sama. Jadual linear ialah struktur data yang digunakan secara meluas dalam amalan Jadual linear biasa termasuk senarai jujukan, senarai terpaut, tindanan, baris gilir, rentetan... Jadual linear secara logiknya adalah struktur linear, iaitu garis lurus berterusan. Walau bagaimanapun, struktur fizikal tidak semestinya berterusan Apabila jadual linear disimpan secara fizikal, ia biasanya disimpan dalam bentuk tatasusunan dan struktur terpaut.
Jadual jujukan ialah struktur linear yang menggunakan unit storan dengan alamat fizikal berterusan untuk menyimpan elemen data dalam urutan Umumnya, Dalam kes ini, storan tatasusunan digunakan. Lengkapkan penambahan, pemadaman, penyemakan dan pengubahsuaian data pada tatasusunan
sebenarnya ialah tatasusunan. Kemudian mengapa anda perlu menulis jadual jujukan, bukankah lebih baik menggunakan tatasusunan sahaja? Perbezaannya ialah menulisnya dalam kelas boleh berorientasikan objek.
public class MyArrayList { public int[] elem;//数组 public int usedSize;//数据的有效个数 public MyArrayList(){ this.elem = new int[10]; } }
Cetak jadual jujukan
Cetak Keputusan:
Oleh kerana paparan dicetak berdasarkan usedsize, usedsize tidak diberikan nilai, jadi tiada apa yang dicetak.
Kedudukan di mana elemen dimasukkan semasa memasukkannya dalam jadual jujukan Elemen mesti disimpan di hadapan,
Analisis lukisan:
Kod adalah seperti berikut:
// 在 pos 位置新增元素 public void add(int pos, int data) { if(pos < 0 || pos > usedSize){ System.out.println("pos位置不合法"); return; } if(isFull()){ this.elem = Arrays.copyOf(this.elem,this.elem.length*2); } for (int i = this.usedSize-1; i >=pos ; i--) { this.elem[i+1] = this.elem[i]; } this.elem[pos] = data; this.usedSize++; } public boolean isFull(){ return this.usedSize == this.elem.length; }
Cetak hasil :
// 判定是否包含某个元素 public boolean contains(int toFind) { for (int i = 0; i < this.usedSize; i++) { if (this.elem[i] == toFind) { return true; } } return false; }
Cetak hasil:
// 查找某个元素对应的位置 public int search(int toFind) { for (int i = 0; i <this.usedSize ; i++) { if(this.elem[i] == toFind){ return i; } } return -1; }
Hasil cetakan:
// 获取 pos 位置的元素 public int getPos(int pos) { if(pos < 0 || pos > this.usedSize){ System.out.println("pos位置不合法"); return -1;//所以,这里说明一下,业务上的处理,这里不考虑 } if (isEmpty()){ System.out.println("顺序表为空"); return -1; } return this.elem[pos]; } public boolean isEmpty(){//判断为不为空的情况下 return this.usedSize == 0; }
Hasil cetakan:
// 给 pos 位置的元素设为 value public void setPos(int pos, int value) { if (pos < 0 || pos > this.usedSize) { System.out.println("pos位置不合法"); return ; } if (isEmpty()) { System.out.println("顺序表为空"); return; } this.elem[pos] = value; } public boolean isEmpty() {//判断为不为空的情况下 return this.usedSize == 0; }
Cetak hasil:
//删除第一次出现的关键字key public void remove(int toRemove) { if(isEmpty()){ System.out.println("顺序表为空"); return; } int index = search(toRemove);//查找要删除元素对应的位置 if(index == -1){ System.out.println("没有你要找到数字"); return; } for (int i = index; i <this.usedSize-1 ; i++) { this.elem[i] = this.elem[i+1]; } this.usedSize--; }
Hasil cetakan:
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan jadual jujukan struktur data Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!