Diferencia entre matriz y lista vinculada

Autor: Laura McKinney
Fecha De Creación: 3 Abril 2021
Fecha De Actualización: 6 Mayo 2024
Anonim
¿Qué son las TABLAS de HASH? | Estructuras de Datos en Ingeniería Informática
Video: ¿Qué son las TABLAS de HASH? | Estructuras de Datos en Ingeniería Informática

Contenido


La principal diferencia entre Formación y Lista enlazada Respecto a su estructura. Las matrices son basado en índices estructura de datos donde cada elemento asociado con un índice. Por otro lado, la lista vinculada se basa en referencias donde cada nodo consta de los datos y las referencias al elemento anterior y siguiente.

Básicamente, una matriz es un conjunto de objetos de datos similares almacenados en ubicaciones de memoria secuenciales bajo un encabezado común o un nombre de variable.

Mientras que una lista vinculada es una estructura de datos que contiene una secuencia de los elementos donde cada elemento está vinculado a su siguiente elemento. Hay dos campos en un elemento de la lista vinculada. Uno es el campo de datos, y otro es el campo de enlace, el campo de datos contiene el valor real que se almacenará y procesará. Además, el campo de enlace contiene la dirección del siguiente elemento de datos en la lista vinculada. La dirección utilizada para acceder a un nodo particular se conoce como puntero.


Otra diferencia significativa entre una matriz y una lista vinculada es que Array tiene un tamaño fijo y debe declararse antes, pero la Lista vinculada no está restringida al tamaño, la expansión y el contrato durante la ejecución.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónFormaciónLista enlazada
BásicoEs un conjunto consistente de un número fijo de elementos de datos.Es un conjunto ordenado que comprende un número variable de elementos de datos.
TallaEspecificado durante la declaración.No es necesario especificar; crecer y encogerse durante la ejecución.
Asignación de almacenamiento La ubicación del elemento se asigna durante el tiempo de compilación.La posición del elemento se asigna durante el tiempo de ejecución.
Orden de los elementos. Almacenado consecutivamente Almacenado al azar
Accediendo al elementoAcceso directo o aleatorio, es decir, especificar el índice de matriz o subíndice.Se accede secuencialmente, es decir, atraviesa comenzando desde el primer nodo en la lista por el puntero.
Inserción y eliminación de elementos.Lentamente, ya que se requiere un cambio.Más fácil, rápido y eficiente.
buscando Búsqueda binaria y búsqueda lineal.búsqueda lineal
Memoria requeridaMenos Más
Utilización de memoriaIneficazEficiente


Definición de matriz

Una matriz se define como un conjunto de un número definido de elementos homogéneos o elementos de datos. Significa que una matriz puede contener un solo tipo de datos, ya sea todos los enteros, todos los números de punto flotante o todos los caracteres. La declaración de una matriz es la siguiente:
int a;
Donde int especifica el tipo de datos o los almacenes de matriz de elementos de tipo. "A" es el nombre de una matriz, y el número especificado dentro de los corchetes es la cantidad de elementos que una matriz puede almacenar, esto también se llama tamaño o longitud de la matriz.

Veamos algunos de los conceptos que deben recordarse sobre las matrices:

  • Se puede acceder a los elementos individuales de una matriz describiendo el nombre de la matriz, seguido de índice o subíndice (determinando la ubicación del elemento en la matriz) dentro de los corchetes. Por ejemplo, para recuperar el quinto elemento de la matriz, necesitamos escribir una declaración a.
  • En cualquier caso, los elementos de una matriz se almacenarán en una ubicación de memoria consecutiva.
  • El primer elemento de la matriz tiene índice cero. Significa que el primer y el último elemento se especificarán como a y a respectivamente.
  • El número de elementos que se pueden almacenar en una matriz, es decir, el tamaño de una matriz o su longitud viene dada por la siguiente ecuación:
    (límite superior-límite inferior) + 1
    Para la matriz anterior, sería (9-0) + 1 = 10. Donde 0 es el límite inferior de la matriz y 9 es el límite superior de la matriz.
  • Las matrices se pueden leer o escribir a través del bucle. Si leemos la matriz unidimensional, se requiere un bucle para leer y otro para escribir (ing) la matriz, por ejemplo:
    a. Para leer una matriz
    para (i = 0; i <= 9; i ++)
    {scanf ("% d", & a); }
    si. Para escribir una matriz
    para (i = 0; i <= 9; i ++)
    {f ("% d", a); }
  • En el caso de una matriz bidimensional, requeriría dos bucles y, de manera similar, una matriz n-dimensional necesitaría n bucles.

Las operaciones realizadas en matrices son:

  1. Creación de matriz
  2. Atravesando una matriz
  3. Inserción de nuevos elementos.
  4. Eliminación de elementos requeridos.
  5. Modificación de un elemento.
  6. Fusión de matrices

Ejemplo

El siguiente programa ilustra la lectura y escritura de la matriz.

#incluir
#incluir
vacío principal ()
{
int a, i;
f ("Ingrese la matriz");
para (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Ingrese la matriz");
para (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Definición de lista vinculada

La lista vinculada es una lista particular de algunos elementos de datos vinculados entre sí. En esto, cada elemento apunta al siguiente elemento que representa el orden lógico. Cada elemento se llama un nodo, que tiene dos partes.

Parte INFO que almacena la información y PUNTERO que apunta al siguiente elemento. Como sabe para almacenar direcciones, tenemos estructuras de datos únicas en C llamadas punteros. Por lo tanto, el segundo campo de la lista debe ser un tipo de puntero.

Los tipos de listas enlazadas son Lista enlazada individualmente, Lista enlazada doblemente, Lista enlazada circular, Lista enlazada doble circular.

Las operaciones realizadas en la Lista vinculada son:

  1. Creación
  2. Atravesar
  3. Inserción
  4. Supresión
  5. buscando
  6. Concatenación
  7. Monitor

Ejemplo

El siguiente fragmento ilustra la creación de una lista vinculada:

nodo de estructura
{
int num;
nodo de estudio * siguiente;
}
inicio = NULL;
vacío crear ()
{
typedef struct node NODE;
NODO * p, * q;
elección de char;
primero = NULL;
hacer
{
p = (NODE *) malloc (sizeof (NODE));
f ("Ingrese el elemento de datos n");
scanf ("% d", & p -> num);
si (p == NULL)
{
q = inicio;
while (q -> next! = NULL)
{q = q -> siguiente
}
p -> siguiente = q -> siguiente;
q -> = p;
}
más
{
p -> siguiente = inicio;
inicio = p;
}
f ("¿Desea continuar (escriba y o n)? n");
scanf ("% c", & elección);
}
while ((opción == y) || (opción == Y));
}

  1. Una matriz es la estructura de datos que contiene una colección de elementos de datos de tipo similar, mientras que la lista vinculada se considera como una estructura de datos no primitiva que contiene una colección de elementos vinculados no ordenados conocidos como nodos.
  2. En la matriz, los elementos pertenecen a índices, es decir, si desea ingresar al cuarto elemento, debe escribir el nombre de la variable con su índice o ubicación dentro del corchete.
    Sin embargo, en una lista vinculada, debe comenzar desde la cabeza y avanzar hasta llegar al cuarto elemento.
  3. Si bien el acceso a una matriz de elementos es rápido, mientras que la lista vinculada toma tiempo lineal, es bastante más lenta.
  4. Operaciones como la inserción y eliminación en matrices consumen mucho tiempo. Por otro lado, el rendimiento de estas operaciones en las listas vinculadas es rápido.
  5. Las matrices son de tamaño fijo. Por el contrario, las listas vinculadas son dinámicas y flexibles y pueden expandirse y contraerse su tamaño.
  6. En una matriz, la memoria se asigna durante el tiempo de compilación, mientras que en una lista vinculada se asigna durante la ejecución o el tiempo de ejecución.
  7. Los elementos se almacenan consecutivamente en matrices, mientras que se almacenan aleatoriamente en listas vinculadas.
  8. El requisito de memoria es menor debido a que los datos reales se almacenan dentro del índice en la matriz. Por el contrario, existe una necesidad de más memoria en las Listas vinculadas debido al almacenamiento de elementos de referencia siguientes y anteriores adicionales.
  9. Además, la utilización de la memoria es ineficiente en la matriz. Por el contrario, la utilización de la memoria es eficiente en la matriz.

Conclusión

Las listas de matrices y vinculados son los tipos de estructuras de datos que difieren en su estructura, métodos de acceso y manipulación, requisitos de memoria y utilización. Y tiene una ventaja y desventaja particular sobre su implementación. En consecuencia, cualquiera de los dos puede usarse según las necesidades.