le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
vogliamo parlareTabella delle sequenze, dobbiamo prima parlare delle tabelle lineari, perché le tabelle sequenziali sono un tipo di tabelle lineari.
Come suggerisce il nome, una tabella lineare è una tabella che organizza i dati come linee.
Lo si capisce pensando di fare la fila nella realtà.
Caratteristiche delle tavole lineari:
La tabella di sequenza è un paragrafoGli indirizzi fisici sono consecutiviI contenitori sono come persone in fila una accanto all’altra.
Una struttura lineare che memorizza gli elementi di dati in sequenza, solitamente utilizzandovettoremagazzinaggio.
Completare l'aggiunta, la cancellazione, il controllo e la modifica dei dati sull'array.
Implementa tu stesso una tabella di sequenza (dati di tipo storage int), utilizza la tabella di sequenza come classe, implementiamo alcune interfacce, ovvero alcunemetodo dei membriPer realizzare l'integrazione, la cancellazione, il controllo e la modifica dei dati.
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() { }
}
Per impostazione predefinita, inizialmente apriamo 10 spazi di dati.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Passa la lunghezza dell'array e usa la lunghezza dell'array per liberare spazio.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
Per impostazione predefinita, i nuovi elementi vengono aggiunti alla fine dell'array.
Punti da considerare:
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;
}
Inserisci l'elemento nel pedice pos.
Precauzioni:
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();
}
}
Verifica se i dati forniti sono inclusi nella tabella di sequenza.
Basta scorrerlo direttamente, restituire true se lo trovi e restituire false se non lo trovi.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Guarda l'indice dei dati forniti in questa tabella di sequenza.
Basta scorrere direttamente e trovare l'indice di ritorno senza restituire -1.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Emette l'elemento nella posizione pos.
Precauzioni:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Modificare l'elemento posizione pos.
Precauzioni:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Elimina la prima occorrenza della chiave.
Precauzioni:
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--;
}
}
}
Ottenere la lunghezza della tabella di sequenza in questo caso si riferisce al numero di dati utili, ovvero usedSize.
public int size() {
return usedSize;
}
Imposta il contenuto della tabella di sequenza su vuoto.
Precauzioni:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
La classe ArrayList viene fornita in Java per rappresentare un elenco sequenziale.
Descrizione dell'interfaccia:
Java prevede 3 metodi di costruzione come mostrato nella tabella:
metodo | Introduzione all'utilizzo del metodo |
---|---|
Lista di array() | Costruzione senza argomenti |
ArrayList(Collezione<? extends E> C) | Crea ArrayList utilizzando altre raccolte |
ArrayList(int capacitàiniziale) | Specificare la capacità iniziale della tabella di sequenza |
I metodi comuni forniti sono simili a quelli implementati sopra.
I vantaggi delle tabelle di sequenza sono i seguenti:
Di seguito i link agli esercizi:
Triangolo Yang Hui