(1) La definición de tabla lineal.
Una secuencia finita de cero o más elementos de datos.
Hay elementos sucesores directos en la tabla lineal de secuencia, uno y solo un sucesor directo y uno y solo un predecesor directo. La relación entre los elementos de datos es una relación de uno a uno
Operaciones de lista común:
Operación
InitList(*L)://初始化操作,简历一个空的线性表L
ListEmpty(L)://若线性表为空,返回true,否则返回Falser
GetElme(L,i,e)://将线性表L中的第i个位置元素值返回给e
LocateElme(L,e)://在线性表中L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败
ListInsert(*L,i,e)://在线性表L中的第i个位置插入新元素e
ListDelete(*L,i,*e)://删除线性表中L中第i个位置元素,并用e返回其值
ListLength(L)://返回线性表L的元素个数
(2) Lineal
La estructura de almacenamiento secuencial de la tabla y la implementación de los algoritmos principales, como los algoritmos de búsqueda, inserción y eliminación.
Definición: La estructura de almacenamiento secuencial de una tabla lineal se refiere al almacenamiento de los elementos de datos de la tabla lineal a la vez con una sección de unidades de almacenamiento con direcciones consecutivas.
Método de almacenamiento secuencial: ocupa el espacio de la memoria en forma de ocupación y, a continuación, almacena los elementos de datos del mismo tipo de datos en él. Una matriz unidimensional realiza la estructura de almacenamiento secuencial.
#define MAXSIZE 20 /*储存空间初始分配量*/
typedef int ElemType;/*ElemType类型根据实际情况而定,假设为int*/
typedef struct {
ElemType data[MAXSIZE]/*据存储数据元素,最大值为MAXSIZE*/
int length; /*线性表当前长度*/
}
sqlist;
* La posición inicial del espacio de almacenamiento: datos de la matriz, su ubicación de almacenamiento es la ubicación de almacenamiento del espacio de almacenamiento
* Capacidad máxima de almacenamiento de la mesa lineal: longitud de matriz MaxSize
* La longitud actual de la tabla lineal: longitud
Inserción y eliminación de estructura de almacenamiento secuencial:
Operación Get element: implementar la operación GetElem es devolver el valor del elemento de posición i en la tabla lineal
#define OK1
#define ERROR 0
#define TRUE 1
#define FALSE
typedef int status;
/*status是函数的数据类型,其值是函数结构状态代码,如OK等*/
/*初始条件:顺序线性表L一存在,1<=i<=ListLength(L)*/
/*操作结构:用e返回L中第i个数据元素的值*/
Operación de inserción de estructura de almacenamiento de secuencia de tabla lineal:
La operación de inserción de la tabla lineal se refiere a insertar un nuevo elemento de datos n antes del i-ésimo elemento de datos de la tabla lineal
La idea del algoritmo de inserción:
La complejidad temporal del algoritmo de inserción:
La derivación de la complejidad temporal muestra que la complejidad temporal promedio de la operación de inserción es O (n).
* Si la posición de inserción no es razonable, lanza una excepción
* Si la longitud de la tabla lineal es mayor o igual que la longitud de la matriz, se lanza una excepción o la capacidad aumenta dinámicamente
* Desde el último elemento, avance hasta la posición i-ésima y muévalos todos una posición hacia atrás respectivamente
* Rellene el elemento a insertar en la posición i out
* La longitud de la mesa más 1
/*初始条件:顺序线性表L以存在1<=i<=ListLength(L),*/
/*操作结构:在L中第i个位置之前插入新的数据元素e,L的长度加1*/
status ListInsert(Sqlist *L,int i,ELemType e){
int k;
if(L->length==MAXSIZE)/*顺序线性表已经满*/
return ERROR;
if(i<=L->length)/*若插入数据位置不在表尾*/
{
for(k=L->length-1;k>=i-1;k--/*将要插入位置后数据元素向后移动一位*/
L->data[k+1]=L->data[k];
}L->data{
i-1]=e;/将新元素插入*/
L->length++;
return OK;
}
La eliminación de la estructura de almacenamiento secuencial de la tabla lineal: la eliminación de la tabla lineal se refiere a la eliminación del elemento de datos i-ésimo (0 <= i <= n-1) en la tabla, de modo que la tabla lineal con longitud n se convierte en longitud n-1 Tabla lineal de, es necesario mover el elemento i + 1 al n-1mo una posición hacia adelante
La idea del algoritmo de eliminación:
Complejidad temporal del algoritmo de eliminación:
La derivación de la complejidad de tiempo muestra que la complejidad de tiempo promedio de la operación de eliminación también es O (n).
* Si la posición de eliminación no es razonable, lanza una excepción
* Eliminar y eliminar elementos
* Desde la posición del elemento eliminado hasta la última posición del elemento, no los mueva todos hacia adelante una posición
* Longitud de la mesa menos 1
Las características de la estructura de almacenamiento secuencial de la tabla lineal:
ventaja:
* Desordenado para expresar la relación lógica entre los elementos de la tabla y agregar espacio de almacenamiento adicional
* Puede acceder rápidamente a los elementos en cualquier posición de la tabla
Desventajas:
* Las operaciones de inserción y eliminación necesitan mover muchos elementos
* Cuando la longitud de la mesa lineal cambia mucho, es difícil determinar la capacidad del espacio de almacenamiento
* Provoca "fragmentación" del espacio de almacenamiento