Estructura de datos (b) la forma lineal (una secuencia)

Lineales características de la estructura:

  1. Existe sólo una se conoce como el "primer" elemento de datos
  2. Sólo existe una se conoce como el "último" elemento de datos
  3. Excepto la primera, la colección de cada elemento de datos fue sólo un precursor;
  4. Excepto por el último elemento, cada conjunto de elementos de datos, sólo un sucesor;

Linear tabla de tipo de definición:
mesa lineal es el más simple y más comúnmente utilizado en una Brevemente estructura de datos, representa un lineal finita secuencia de elementos de datos n en cuanto al significado específico de cada elemento de datos, varían en diferentes situaciones. que es un número o un símbolo, que puede ser un libro, o incluso otra información más compleja como las 26 letras del alfabeto.
(A, B, C, ... Z)
es una tabla lineal.
En una mesa lineal ligeramente más compleja, un elemento de datos puede estar compuesta de una pluralidad de elementos de datos que constan de, en este caso, a menudo referido como un elemento de registro de datos, que contiene una gran cantidad registros de la tabla lineales, también conocido como archivo .
por ejemplo: información de los estudiantes de la escuela a él por su nombre, número de estudiante, género, edad, clase y otras cinco datos de artículos

nombre completo Identificación del estudiante género edad clase
Wang Lin 201600001 masculino 12 Una suave
Chen Hong 201600002 mujer 11 Una suave
Amor de dinero en 201600003 masculino 13 Un medidor

La siguiente información se ha convertido en un registro (elementos de datos) y los elementos de datos de la columna denominado 5

Nombre (elemento de datos) Identificación del Estudiante (elemento de datos) Género (elemento de datos) Edad (elemento de datos) Clase (elemento de datos)
Wang Lin 201600001 masculino 12 Una suave

Cuando no hay una tabla de datos que llamamos mesa vacía

implementación sencilla de la tabla indica el orden lineal (utilizando matrices)

package main.com.cs.abstractDataType;

import java.util.Arrays;

public class AbstractDataType {

    //定义抽象数组
    private int[] arr;

    public int[] getArr() {
        if(arr == null){
            throw new NullPointerException("数组为空");
        }
        return arr;
    }

    public void setArr(int[] arr) {
        if(arr == null){
            throw new NullPointerException("数组为空");
        }
        this.arr = arr;
    }

    public AbstractDataType(){

    }

    public AbstractDataType(int[] arr){
        init(arr);
    }

    //初始化
    private void init(int[] arr){
        if(arr == null){
            throw new NullPointerException("数组为空");
        }
        this.arr = arr;
    }

    //销毁
    public void destoryDataType(){
        this.arr = null;
    }

    //插入元素  插入到末尾
    public int put(int a){
        if(this.arr.length != 0){
            int[] arr  = new int[this.arr.length +1 ];
            for (int i = 0; i < arr.length; i++) {
                if (i != this.arr.length){
                    arr[i] = this.arr[i];
                }else {
                    arr[i] = a;
                }
            }
            this.arr = null;
            this.arr = arr;
        }else {
            arr[0] = a;
        }
        return a;
    }


    //在指定位置 插入元素
    public int put(int index,int a){

        //如果  索引小于 0 或者 索引 大于 数组长度  那么就直接插入到最后面
        if(index < 0 || index > this.arr.length){
           put(a);
       }else {
            //定义一个 新的数组  长度为原来数组长度多1
            int[] arr  = new int[this.arr.length + 1];

            for (int i = 0; i < arr.length; i++) {
                if(i < index){
                    arr[i] = this.arr[i];
                }

                if(i == index){
                    arr[i] = a;
                }

                if(i > index){
                    arr[i] = this.arr[i-1];
                }
            }

            this.arr = arr;
        }
        return  a;
    }


    //删除 指定 元素
    public int delete(int a){
        //判断元素是否存在
        int contain = contain(this.arr, a);

        if (contain == 0){
            throw new RuntimeException("元素不存在");
        }

        int[] arr = new int[this.arr.length - contain];

        int index = 0;
        for (int i = 0; i < this.arr.length; i++) {
            if (this.arr[i] != a){
                arr[index] = this.arr[i];
                index ++ ;
            }
        }

        this.arr = arr;
        return  a;
    }


    //判断是否包含 此元素
    public int  contain(int[] arr,int a){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (a == arr[i]){
                count ++;
            }
        }
        return  count;
    }


    @Override
    public String toString() {
        return "AbstractDataType{" +
                "arr=" + Arrays.toString(arr) +
                '}';
    }

    public static void main(String[] args) {
        int[] a = {1,2,3};
        AbstractDataType  abstractDataType = new AbstractDataType(a);
        abstractDataType.put(4);
        abstractDataType.put(5);
        abstractDataType.put(0,0);
        abstractDataType.delete(0);
        System.out.println(abstractDataType.toString());
    }
}

Publicado 69 artículos originales · ganado elogios 6 · vistas 2504

Supongo que te gusta

Origin blog.csdn.net/qq_40539437/article/details/103987869
Recomendado
Clasificación