Listas Ligadas Simples. Definíción I Es, en sencillas palabras. un grupo de datos organizados...

8
Listas Ligadas Simples

Transcript of Listas Ligadas Simples. Definíción I Es, en sencillas palabras. un grupo de datos organizados...

Page 1: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Listas Ligadas Simples

Page 2: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definíción I

Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la organización no esta dada implícitamente por su posición en el arreglo.

En una lista ligada cada elemento es un nodo que contiene el dato y además una liga al siguiente dato. Estas ligas son simplemente variables que contienen la(s) dirección(es) de los datos contiguos o relacionados.

Se accede a una lista ligada a través de un apuntador al primer nodo de la lista.

Para acceder a los nodos subsecuentes, se lleva a cabo a través del miembro liga almacenado en cada nodo.

El apuntador liga del último nodo de una lista establece en NULL, lo cual marca el final.

Page 3: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definición II

Una lista ligada es una colección de estructuras auto referenciadas, llamadas nodos, que se encuentran conectados por medio de ligas (apuntadores).

Las estructuras autoreferenciadas contienen un miembro apuntador, el cual apunta hacia una estructura del mismo tipo.

Por ejemplo:

struct _nodo{

Int nodo;

struct _nodo * ptrSiguiente;

};

Page 4: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definición III

El miembro ptrSiguiente se conoce como liga, por lo que puede usarse para unir una estructura de tipo struct _nodo con otra del mismo tipo struct _nodo.

Page 5: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definición IV

Una lista ligada es adecuada, cuando el número de elementos a representar en la estructura de datos es impredecible.

Para crear una lista ligada se requiere de una asignación de memoria dinámica de memoria, esto quiere decir que un programa tiene la característica de obtener más espacio de memoria en tiempo de ejecución.

Esto nos sirve para almacenar nuevos nodos y liberar espacio que ya no necesario .

Las listas ligadas sólo se llenan cuando el sistema tiene suficiente memoria.

Page 6: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definición V

Para la asignación de memoria dinámica utilizamos las funciones malloc, free y el operador sizeof.

Malloc toma como argumento el número de bytes que van a asignarse, devolviendo un apuntador de tipo void hacia la memoria asignada.

En el caso de que no pueda asignar la memoria devuelve un apuntador de tipo NULL.

Normalmente malloc se utiliza con sizeof.

Por ejemplo:

ptrNuevo = malloc( sizeof( struct nodo ) );

Sizeof evalua a struc nodo para determinar el tamaño en bytes.

De este modo puede asignar una nueva área de memoria que coincida con el numero de bytes.

Finalmente almacena un apuntador a la memoria asignada a una variable.

Page 7: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Definición VI

La función free libera memoria.

Para liberar memoria dinámica asignada por malloc se utiliza la siguiente instrucción:

free(elementoALiberar);

Page 8: Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Funciones esenciales de una lista.

Las funciones primarias son insertar y eliminar.

La función vacía únicamente determina si hay o no elementos en una lista.

La función insertar recibe la dirección de la lista y un elemento a insertar.

La función eliminar recibe la dirección de la lista y un elemento a eliminar.