Estructura de Datos Lineales
Estructura de Datos Lineales
ESTRUCTURA DE DATOS
LINEALES
1) Listas:
*Definición: Las listas son una sucesión de cero o más elementos.
Esta es una definición muy simple y que no aclara demasiado en términos
informáticos, así que profundizaremos un poco más.
Hay varios tipos de listas, las hay enlazadas, no enlazadas, ordenadas y no
ordenadas. Nosotros vamos a estudiar las listas enlazadas, tanto ordenadas
como no ordenadas.
La diferencia que existe entre las listas enlazadas y las no enlazadas es que
las enlazadas utilizan punteros, es decir, asignación dinámica de memoria, lo
que optimiza la gestión de la misma. Una lista no enlazada es un simple array,
y por lo tanto es un bloque contiguo de memoria, mientras que una lista
enlazada es un conjunto de nodos que no tienen porqué ocupar posiciones
contiguas de memoria.
La diferencia entre listas ordenadas y no ordenadas es obvia, las ordenadas
mantienen cierto orden entre sus elementos.
*Clasificación:
✓Listas simples:
Se definen como un conjunto de nodos uno detrás de otro, del cual siempre
se puede conocer al nodo inicial y al final, de cada nodo de la lista, se conoce
un contenido, que es la información que almacena dentro puede ser de
cualquier tipo de dato un sucesor único excepto el ultimo nodo de la lista.
✓Listas ordenadas:
Son las que la posición de cada nodo viene determinada por el valor de uno o
más campos obligatorios de información del nodo denominados clave No se
permite tener dos nodos con la misma clave.
✓Pilas:
Colección ordenada de elementos homogéneos en la que sólo se pueden
añadir y eliminar elementos por el principio de la misma cabecera siguiendo
la Filosofía LIFO (Último en entrar primero en salir).
✓Cola:
Colección ordenada de elementos homogéneos en la que sólo se pueden
añadir elementos por el final y se eliminan por el principio (frente) siguiendo
la filosofía FIFO (Primero en entrar primero en salir).
✓Listas Doblemente enlazadas (LDE):
Son aquellas que presentan una relación lineal en ambos sentidos, un enlace
a predecesor y antecesor en cada nodo, su recorrido puede ser en ambos
sentidos y pueden ser simples u ordenadas.
2) Listas enlazadas:
Una lista enlazada o estructura ligada, es una estructura lineal que almacena
una colección de elementos generalmente llamados nodos, en donde cada
nodo puede almacenar datos y ligas a otros nodos. De esta manera los nodos
pueden localizarse en cualquier parte de la memoria, utilizando la referencia
que lo relaciona con otro nodo dentro de la estructura.
Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar
datos que están cambiando constante mente. A diferencia de los vectores,
las estructuras dinámicas se expanden y se contraen haciéndolas más
flexibles a la hora de añadir o eliminar información.
Las listas enlazadas permiten almacenar información en posiciones de
memoria que no sean contiguas; y se almacena en los elementos nodos.
Estos nodos poseen dos campos uno para almacenar la información o valor
del elemento y otro para el enlace que determina la posición del siguiente
elemento o nodo de la lista.
*Características
Se compone de dos partes: una que contiene la información en sí y la
segunda es un puntero y q su función es apuntar al siguiente nodo que haya.
Una lista enlazada es un tipo de dato autorreferenciado porque contienen un
puntero o enlace (en inglés link, del mismo significado) a otro dato del mismo
tipo.
Existen diferentes tipos de listas enlazadas: listas enlazadas simples, listas
doblemente enlazadas, listas enlazadas circulares y listas enlazadas
doblemente circulares.
Las listas enlazadas pueden ser implementadas en muchos lenguajes.
Lenguajes tales como Lisp, Scheme y Haskell tienen estructuras de datos ya
construidas, junto con operaciones para acceder a las listas enlazadas.
*Operaciones:
Una lista enlazada requiere unos controles para la gestión de los elementos
contenidos en ellas. Estos controles se manifiestan en forma de operaciones
que tendrán las siguientes funciones:
✓Declaración de los tipos nodo y puntero a nodo.
✓Inicialización o creación.