2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
nous voulons parlerTableau de séquence, nous devons d'abord parler de tableaux linéaires, car les tableaux séquentiels sont un type de tableaux linéaires.
Comme son nom l'indique, un tableau linéaire est un tableau qui organise les données sous forme de lignes.
Cela peut être compris en pensant à faire la queue dans la réalité.
Caractéristiques des tables linéaires :
Le tableau de séquence est un paragrapheLes adresses physiques sont consécutivesLes unités de stockage sont comme des gens alignés les uns à côté des autres.
Une structure linéaire qui stocke les éléments de données en séquence, généralement en utilisanttableaustockage.
Terminez l'ajout, la suppression, la vérification et la modification des données sur la baie.
Implémentez vous-même une table de séquence (stockage de données de type int), utilisez la table de séquence comme classe, nous implémentons certaines interfaces, c'est-à-dire certainesméthode membreRéaliser l'ajout, la suppression, la vérification et la modification de données.
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() { }
}
Par défaut, nous ouvrons initialement 10 espaces de données.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Transmettez la longueur du tableau et utilisez la longueur du tableau pour ouvrir de l'espace.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
Les nouveaux éléments sont ajoutés par défaut à la fin du tableau.
Points à considérer:
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;
}
Insérer un élément à l'indice pos.
Précautions:
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();
}
}
Vérifiez si les données fournies sont incluses dans le tableau de séquence.
Parcourez-le simplement directement, renvoyez true si vous le trouvez et renvoyez false si vous ne le trouvez pas.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Regardez l'index des données données dans cette table de séquence.
Parcourez simplement directement et recherchez l'indice de retour sans renvoyer -1.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Sortez l’élément en position pos.
Précautions:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Modifiez l'élément de position pos.
Précautions:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Supprimez la première occurrence de la clé.
Précautions:
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--;
}
}
}
L'obtention de la longueur de la table de séquence fait ici référence au nombre de données utiles, c'est-à-dire usedSize.
public int size() {
return usedSize;
}
Définissez le contenu de la table de séquence sur vide.
Précautions:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
La classe ArrayList est fournie en Java pour représenter une liste séquentielle.
Description des interfaces :
Java propose 3 méthodes de construction, comme indiqué dans le tableau :
méthode | Introduction à l'utilisation de la méthode |
---|---|
Liste des tableaux() | Construction sans argument |
ArrayList(Collection<? extends E> c) | Construire ArrayList en utilisant d'autres collections |
ArrayList(int initialCapacity) | Spécifier la capacité initiale de la table de séquence |
Les méthodes courantes fournies sont similaires à celles que nous avons implémentées ci-dessus.
Les avantages des tableaux de séquences sont les suivants :
Les liens vers les exercices sont ci-dessous :
Triangle Yang Hui