2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
wir wollen redenSequenztabelle, müssen wir zuerst über lineare Tabellen sprechen, da sequentielle Tabellen eine Art lineare Tabellen sind.
Wie der Name schon sagt, handelt es sich bei einer linearen Tabelle um eine Tabelle, die Daten wie Zeilen organisiert.
Man kann es verstehen, wenn man an das Anstehen in der Realität denkt.
Eigenschaften linearer Tische:
Die Sequenztabelle verwendet einen AbsatzPhysische Adressen sind fortlaufendDie Lagereinheiten sind wie Menschen, die nebeneinander aufstehen.
Eine lineare Struktur, die Datenelemente nacheinander speichert, normalerweise unter Verwendung vonArrayLagerung.
Schließen Sie das Hinzufügen, Löschen, Überprüfen und Ändern von Daten im Array ab.
Implementieren Sie selbst eine Sequenztabelle (Daten vom Typ „storage int“), verwenden Sie die Sequenztabelle als Klasse, wir implementieren einige Schnittstellen, also einigeMember-MethodeUm das Hinzufügen, Löschen, Überprüfen und Ändern von Daten zu realisieren.
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() { }
}
Standardmäßig öffnen wir zunächst 10 Datenbereiche.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Übergeben Sie die Array-Länge und verwenden Sie die Array-Länge, um Platz zu schaffen.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
Neue Elemente werden standardmäßig am Ende des Arrays hinzugefügt.
Punkte, die man beachten sollte:
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;
}
Element am pos-Index einfügen.
Vorsichtsmaßnahmen:
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();
}
}
Überprüfen Sie, ob die angegebenen Daten in der Sequenztabelle enthalten sind.
Gehen Sie es einfach direkt durch, geben Sie „true“ zurück, wenn Sie es finden, und geben Sie „false“ zurück, wenn Sie es nicht finden.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Sehen Sie sich den Index der angegebenen Daten in dieser Sequenztabelle an.
Führen Sie einfach eine direkte Schleife durch und finden Sie den Rückgabeindex, ohne -1 zurückzugeben.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Geben Sie das Element an der Pos-Position aus.
Vorsichtsmaßnahmen:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Ändern Sie das Pos-Positionselement.
Vorsichtsmaßnahmen:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Löschen Sie das erste Vorkommen des Schlüssels.
Vorsichtsmaßnahmen:
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--;
}
}
}
Das Erhalten der Länge der Sequenztabelle bezieht sich hier auf die Anzahl der Nutzdaten, also auf usedSize.
public int size() {
return usedSize;
}
Setzen Sie den Inhalt der Sequenztabelle auf leer.
Vorsichtsmaßnahmen:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
Die Klasse ArrayList wird in Java zur Darstellung einer sequentiellen Liste bereitgestellt.
Schnittstellenbeschreibung:
Java bietet drei Konstruktionsmethoden, wie in der Tabelle gezeigt:
Methode | Einführung in die Methodennutzung |
---|---|
Anordnungsliste() | Konstruktion ohne Argumente |
ArrayList(Sammlung<? extends E> C) | Erstellen Sie ArrayList mit anderen Sammlungen |
ArrayList(int Anfangskapazität) | Geben Sie die Anfangskapazität der Sequenztabelle an |
Die bereitgestellten allgemeinen Methoden ähneln denen, die wir oben implementiert haben.
Die Vorteile von Sequenztabellen sind wie folgt:
Links zu den Übungen finden Sie unten:
Yang-Hui-Dreieck