Recomendado, 2024

La Elección Del Editor

Diferencia entre matriz y lista enlazada

La principal diferencia entre Array y la lista Vinculada se refiere a su estructura. Las matrices son una estructura de datos basada en índices donde cada elemento se asocia con un índice. Por otro lado, la lista vinculada se basa en las referencias donde cada nodo consiste en 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 enlazada. Uno es campo de datos y otro 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 enlazada. La dirección utilizada para acceder a un nodo en particular se conoce como puntero.

Otra diferencia significativa entre una matriz y una lista enlazada es que la Matriz tiene un tamaño fijo y se debe declarar antes, pero la Lista Vinculada no se limita al tamaño, la expansión y el contrato durante la ejecución.

Gráfica comparativa

Bases para la comparaciónFormaciónLista enlazada
BASICEs 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.
tamañoEspecificado durante la declaración.No hay necesidad de especificar; Crecer y encogerse durante la ejecución.
Asignación de almacenamientoLa 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 elementosAlmacenado consecutivamenteAlmacenado al azar
Accediendo al elementoAcceso directo o aleatorio, es decir, especifique el índice de matriz o subíndice.Se accede de forma secuencial, es decir, a partir del primer nodo en la lista por el puntero.
Inserción y eliminación de elemento.Lento relativamente según se requiera el cambio.Más fácil, rápido y eficiente.
buscandoBúsqueda binaria y búsqueda lineal.búsqueda lineal
Memoria requeridaMenosMás
Utilización de la memoriaIneficazEficiente

Definición de Array

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 [10];
Donde int especifica el tipo de datos o el tipo de elementos que almacena la matriz. "A" es el nombre de una matriz, y el número especificado dentro de los corchetes es el número de elementos que una matriz puede almacenar, esto también se denomina tamaño o longitud de la matriz.

Veamos algunos de los conceptos a recordar acerca de los arreglos:

  • Se puede acceder a los elementos individuales de una matriz describiendo el nombre de la matriz, seguido de un índice o subíndice (que determina 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 [4].
  • 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 [0]. Significa que el primer y último elemento se especificarán como un [0] y un [9] 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 dado 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 (imprimir) la matriz, por ejemplo:
    a. Para leer una matriz
    para (i = 0; i <= 9; i ++)
    {scanf ("% d", & a [i]); }
    segundo. Para escribir una matriz
    para (i = 0; i <= 9; i ++)
    {printf ("% d", a [i]); }
  • En el caso de una matriz 2-D, 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. Supresió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.

#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
getch ();
}

Definición de lista enlazada

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

INFO parte que almacena la información y PUNTERO que apunta al siguiente elemento. Como saben para almacenar direcciones, tenemos una estructura de datos única en C denominada punteros. Por lo tanto, el segundo campo de la lista debe ser un tipo de puntero.

Los tipos de listas vinculadas son: Lista de enlace único, Lista de enlace doble, Lista de enlace circular, Lista de enlace doble circular.

Las operaciones realizadas en la lista enlazada son:

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

Ejemplo

El siguiente fragmento de código ilustra la creación de una lista enlazada:

struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}

Diferencias clave entre la matriz y la lista vinculada

  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 desordenados 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 enlazada, tienes que 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 tarda un tiempo lineal, es bastante más lenta.
  4. Las operaciones como la inserción y eliminación en matrices consumen mucho tiempo. Por otro lado, el rendimiento de estas operaciones en listas enlazadas es rápido.
  5. Las matrices son de tamaño fijo. En contraste, las listas enlazadas son dinámicas y flexibles y pueden ampliar y contraer 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 de forma consecutiva en matrices, mientras que se almacenan aleatoriamente en listas enlazadas.
  8. El requisito de memoria es menor debido a que los datos reales se almacenan dentro del índice en la matriz. A diferencia de lo anterior, se necesita 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. A la inversa, la utilización de la memoria es eficiente en la matriz.

Conclusión

Las listas de Arrays y Vinculadas 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 particular ventaja y desventaja sobre su implementación. En consecuencia, cualquiera de los dos puede ser utilizado según la necesidad.

Top