Usar almacenamiento secuencial para fusionar dos tablas lineales
#Pragma once
#Definir tamaño de lista 200
# include & ltiostream & gt
Usar espacio de nombres std
typedef int tipo de datos;
estructura typedef
{
Lista de tipos de datos [tamaño de lista];
int length;
} SeqList
//Inicializar lista lineal
void InitList(SeqList *L)
{ p >
l-> length = 0; //Establece la longitud de la tabla lineal en 0.
}
// Determine si la tabla lineal está vacía. Si la tabla lineal está vacía, devuelve 1; de lo contrario, devuelve 0.
int ListEmpty(SeqList L)
{
Si (longitud == 0)
Devuelve 1;
Otros
Devuelve 0;
}
//Buscar por número de serie
int GetElem(SeqList L, int i, Tipo de datos *e)
/*Encuentre el elemento I-ésimo en la tabla lineal, devuelva E si tiene éxito, devuelva 1 para indicar éxito; de lo contrario, devuelva -1 para indicar fracaso*/
{
if(i<1||I>longitud)
return-1;
otro
* e = l. [I-1];
Return 1;
}
//Buscar por contenido
int LocateElem(lista de secuencia L , tipo de datos e)
{
int I;
for(I = 0; I< length; I++)/*desde el primer elemento Comience a comparar con E */
If (L.list[i] == e) /*Si hay un elemento igual a e */
Return I+1;? /*Devuelve el número de secuencia del elemento en la lista lineal*/
Devuelve 0;? /* En caso contrario, devuelve 0 */
}
//Insertar operación
int insertList(SeqList *L, int I, tipo de datos e) p>
/*Inserte el elemento E en la posición I-ésima de la lista de secuencias. Si la inserción se realiza correctamente, se devolverá 1. Si la inserción es ilegal, se devolverá -1 si la lista de secuencias está llena. , se devolverá 0.
*/
{
int j;
if (i<1 | | I>l->Length+1)/* in Antes de insertar un elemento, determinar si la posición de inserción es legal*/
{
cout & lt& lt"posición de inserción"
return-1;?
}
else if(L-& gt; length& gt=ListSize)/* Antes de insertar un elemento, determine si la lista de secuencia está llena y el elemento no se puede insertar*/
{
cout & lt& lt"La lista de secuencia está llena y no se pueden insertar elementos."& lt& ltendl
Devuelve 0;
} p>
Otros
{
for(j = L-& gt; longitud; j & gt= I; j -)
/* Mover los elementos después de la posición I-ésima hacia atrás en orden*/
{
l-& gt; [j-1 ];
}
l-& gt; lista[I-1]= e;
l-& gt; -& gt; Longitud + 1;
Devolver 1
}
}
/*Eliminar operación, eliminar el elemento I. */
int DeleteList(SeqList *L, int i, DataType *e)
{
int j;
Si ( L-& gt; length& lt=0)
{
cout & lt& ltLa lista de secuencias está vacía y no se puede eliminar& lt& ltendl
Return 0;< /p >
}
else if(I & lt; 1 | | I & gt; l-& gt; longitud)
{
cout & lt& lt"¡Posición de eliminación inapropiada!"& lt& ltendl
return-1;
}
Otro
{ p >
* e = L-& gt; lista[I-1];
for(j = I; j & lt= L-& gt; longitud-1; j++) p >
{
l-& gt;lista[j-1]= L->lista[j];
}
l ->Longitud=L->Longitud-1;
Regresar 1;
}
}
/* Encuentra el longitud de la lista lineal*/
int ListLength(SeqList L)
{
Return L.length
}
/*Borrar lista de secuencias*/
anular lista clara (SeqList *L)
{
l-& gt;
}
Datos extendidos
La estructura de almacenamiento secuencial de la tabla lineal es encontrar un espacio en la memoria y ocupar un cierto espacio de memoria ocupando el espacio. y luego en Los elementos de datos del mismo tipo de datos se almacenan secuencialmente en este espacio.
Dado que cada elemento de datos en una tabla lineal es del mismo tipo, el lenguaje C (así como otros lenguajes) utiliza una matriz unidimensional para implementar una estructura de almacenamiento secuencial, es decir, el primer elemento de datos. se almacena en la matriz marcada como posición 0, luego los elementos adyacentes en la lista lineal se almacenan en posiciones adyacentes en la matriz.
Atributos de almacenamiento secuencial
Tres atributos:
1. La posición inicial del espacio de almacenamiento: datos de la matriz, su ubicación de almacenamiento es la ubicación de almacenamiento del almacenamiento. espacio .
2. La capacidad máxima de almacenamiento de la tabla lineal: la longitud de la matriz MaxSize.
3. La longitud actual de la tabla lineal: longitud.