Lineales características de la estructura:
- Existe sólo una se conoce como el "primer" elemento de datos
- Sólo existe una se conoce como el "último" elemento de datos
- Excepto la primera, la colección de cada elemento de datos fue sólo un precursor;
- 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());
}
}