Maison  >  Article  >  Java  >  Comment implémenter une structure de données de table séquentielle en utilisant Java ?

Comment implémenter une structure de données de table séquentielle en utilisant Java ?

WBOY
WBOYavant
2023-04-21 14:31:081760parcourir

    Préface

    Une liste linéaire est une séquence finie de n éléments de données ayant les mêmes caractéristiques. Les tableaux linéaires sont une structure de données largement utilisée dans la pratique. Les tableaux linéaires courants sont : les listes séquentielles, les listes chaînées, les piles, les files d'attente, les chaînes... Une liste linéaire est logiquement une structure linéaire, c'est-à-dire une ligne droite continue. Cependant, la structure physique n'est pas nécessairement continue. Lorsque les tableaux linéaires sont physiquement stockés, ils le sont généralement sous forme de tableaux et de structures liées.

    Comment implémenter une structure de données de table séquentielle en utilisant Java ?

    1. Table de séquence

    1.1 Qu'est-ce qu'une table de séquence

    Une table de séquence est une structure linéaire qui utilise une unité de stockage avec des adresses physiques continues pour stocker des éléments de données en séquence. Généralement, le stockage en tableau est utilisé. Terminez l'ajout, la suppression, la vérification et la modification des données sur la baie.

    En fait, c'est un tableau. Alors pourquoi avez-vous besoin d’écrire une table de séquence ? Ne serait-il pas préférable d’utiliser simplement un tableau ? La différence est que son écriture dans une classe peut être orientée objet.

    Les tables de séquence peuvent généralement être divisées en :

    • Table de séquence statique : utiliser un stockage de tableau de longueur fixe

    • Table de séquence dynamique : utiliser un stockage de tableau ouvert dynamiquement

    La table de séquence statique convient pour déterminer la quantité doit être stocké Scénario de données.

    Le tableau de longueur fixe de la table de séquence statique fait que N est trop grand. Ouvrir trop d'espace est un gaspillage, et ouvrir trop peu d'espace n'est pas suffisant

    En revanche, la dynamique. La table de séquence est plus flexible et peut allouer dynamiquement la taille de l'espace en fonction des besoins.

    public class MyArrayList {
       public int[] elem;//数组
       public int usedSize;//数据的有效个数
     
       public MyArrayList(){
           this.elem = new int[10];
       }
    }

    2.4 Ajouter des éléments à la position pos

    Insérer dans la table de séquence Lorsqu'un élément est inséré, l'élément doit être stocké devant la position

    Comment implémenter une structure de données de table séquentielle en utilisant Java ?

    //打印顺序表
    public void display(){
            for (int i = 0; i < this.usedSize; i++) {
                System.out.print(this.elem[i] + " ");
            }
            System.out.println();
        }

    2.5 Déterminer s'il contient un élément

    //获取顺序表长度
        public int size(){
            return this.usedSize;
       }

    2.6 Trouver la position correspondant à un élément

    //在 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;
        }

    2.7 Obtenir l'élément en position pos

    //判断是否包含某个元素
    public boolean contains(int toFind){
            for (int i = 0; i < this.usedSize; i++) {
                if(this.elem[i] == toFind){
                    return true;
                }
            }
            return false;
        }

    2.8 Définir l'élément en position pos sur la valeur

    //查找某个元素的对应位置,找不到返回-1
        public int search(int toFind){
            for (int i = 0; i < this.usedSize; i++) {
                if(this.elem[i] == toFind){
                    return i;
                }
            }
            return -1;
        }

    2.9 Supprimer l'élément que vous souhaitez supprimer

    //获取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;
        }
    Comment implémenter une structure de données de table séquentielle en utilisant Java ?2.10 Effacer la liste de séquence

     //给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;如果数组当中是引用数据类型
        }

    4.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer