Eine lineare Liste ist eine endliche Folge von n Datenelementen mit denselben Eigenschaften. Lineare Tabellen sind eine in der Praxis weit verbreitete Datenstruktur. Gängige lineare Tabellen sind: sequentielle Listen, verknüpfte Listen, Stapel, Warteschlangen, Zeichenfolgen ... Eine lineare Liste ist logischerweise eine lineare Struktur, dh eine kontinuierliche gerade Linie. Die physische Struktur ist jedoch nicht unbedingt kontinuierlich. Wenn lineare Tabellen physisch gespeichert werden, werden sie normalerweise in Form von Arrays und verknüpften Strukturen gespeichert.
Eine Sequenztabelle ist eine lineare Struktur, die eine Speichereinheit mit kontinuierlichen physischen Adressen verwendet, um Datenelemente der Reihe nach zu speichern. Schließen Sie das Hinzufügen, Löschen, Überprüfen und Ändern von Daten im Array ab.
Tatsächlich handelt es sich um ein Array. Warum müssen Sie dann eine Sequenztabelle schreiben? Wäre es nicht besser, einfach ein Array zu verwenden? Der Unterschied besteht darin, dass das Schreiben in einer Klasse objektorientiert sein kann.
Sequenztabellen können im Allgemeinen unterteilt werden in:
Statische Sequenztabelle: Array-Speicher mit fester Länge verwenden
Dynamische Sequenztabelle: Dynamisch geöffneten Array-Speicher verwenden
Statische Sequenztabelle eignet sich zur Bestimmung der Menge Muss gespeichert werden Datenszenario
Das Array fester Länge der statischen Sequenztabelle führt dazu, dass das Öffnen von zu viel Speicherplatz eine Verschwendung ist und das Öffnen von zu wenig Speicherplatz nicht ausreicht Die Sequenztabelle ist flexibler und kann die Speicherplatzgröße je nach Bedarf dynamisch zuweisen
public class MyArrayList { public int[] elem;//数组 public int usedSize;//数据的有效个数 public MyArrayList(){ this.elem = new int[10]; } }2.4 Elemente an Pos-Position hinzufügenIn Sequenztabelle einfügen Wenn ein Element eingefügt wird, muss das Element vor der Position gespeichert werden
//打印顺序表 public void display(){ for (int i = 0; i < this.usedSize; i++) { System.out.print(this.elem[i] + " "); } System.out.println(); }
2.5 Bestimmen Sie, ob es ein Element enthält
//获取顺序表长度 public int size(){ return this.usedSize; }2.6 Finden Sie die Position entsprechend einem Element
//在 pos 位置新填元素 public void add(int pos,int data){ if(pos < 0 || pos >usedSize){ System.out.println("pos 位置不合法!"); return; } if(isfull()) { Arrays.copyOf(this.elem,2*this.elem.length); } 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; }
//判断是否包含某个元素 public boolean contains(int toFind){ for (int i = 0; i < this.usedSize; i++) { if(this.elem[i] == toFind){ return true; } } return false; }
//查找某个元素的对应位置,找不到返回-1 public int search(int toFind){ for (int i = 0; i < this.usedSize; i++) { if(this.elem[i] == toFind){ return i; } } return -1; }
//获取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; }2.10 Löschen Sie die Sequenzliste
//给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; }3 . MyArrayList.java
//删除第一次出现的关键字key public void remove(int toRmove){ if (isEmpty()){ System.out.println("顺序表为空!"); return; } int index = search(toRmove); 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--; //this.elem[useSize] = null;如果数组当中是引用数据类型 }
Das obige ist der detaillierte Inhalt vonWie implementiert man eine sequentielle Tabellendatenstruktur mit Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!