APLICACIÓN DE LAS LISTAS EN EL ENTORNO COMPUTACIONAL INVESTIGACION
Daniel Medina Dominguez
MATERIA: ESTRUCTURA DE DATOS PROFESORA: CLAUDIA MORAN SANCHEZ GRUPO: 15301 INVESTIGACION INTRODUCCIÓN 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; para almacenar la información contienen elementos llamados 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. Los datos son los objetos sobre los cuales opera la computadora. Un lenguaje de programación puede ser considerado como la descripción de un conjunto de datos y un conjunto de operaciones que se le aplican a estos en un orden determinado. La palabra dato hace referencia a valores simples o conjunto de valores y pueden organizarse en muchas formas. Al modelo matemático o lógico de una organización particular de datos se le conoce con el nombre de estructura de datos. CLASIFICACIÓN Las estructuras de datos pueden clasificarse en lineales y no lineales. Se dice que una estructura es lineal si sus elementos forman una secuencia y existen dos formas básicas de representarlas en la memoria de la computadora. Una de ellas es almacenando sus elementos en posiciones continuas y otra es reflejando la relación entre los elementos por medio de punteros o enlaces. Las primeras estructuras reciben el nombre de arreglos (Array) y las segundas listas enlazadas. CONCEPTO DE LISTAS ENLAZADAS Una lista enlazada es una colección lineal de elementos donde el orden de estos se establece mediante punteros. La idea básica es que cada componente de la lista incluya un puntero que indique donde puede encontrarse el siguiente componente por lo que el orden relativo de estos puede ser fácilmente alterado modificando los punteros lo que permite, a su vez, añadir o suprimir elementos de la lista. Por tanto, una lista enlazada no está limitada a contener un número máximo de componentes; puede expandir o contraer su tamaño mientras se ejecuta el programa. CLASES DE ESTRUCTURAS INVESTIGACION Entre las diferentes clases de estructuras enlazadas se encuentran las listas enlazadas o listas unidireccionales y las listas dobles o bidireccionales. En las listas unidireccionales cada elemento está encadenado al siguiente y se tiene un apuntador al primer elemento (Cabeza de la lista) y en las listas bidireccionales cada elemento de la lista está encadenado con el siguiente y con el precedente y en la cabeza de la lista se tiene un apuntador al primer y al último elemento de la lista. LISTAS SIMPLES Y DOBLEMENTE ENLAZADAS Las listas simplemente enlazadas tienen el inconveniente de que solo pueden recorrerse en una dirección. Podemos movernos por la lista partiendo del primer elemento y siguiendo a los apuntadores que se conservan en la lista junto con los elementos recorrerla hasta el final, pero no es posible moverse hacia atrás. Las listas doblemente enlazadas aunque implican un gasto adicional de memoria, se justifica su uso en los casos donde es necesario poder recorrer la lista en los dos sentidos. IMPLEMENTACIÓN DE LISTAS ENLAZADAS Para ilustrar como se implementan las listas enlazadas, se analiza a continuación como se podría crear una lista de nombres de personas y una vez creada tener la posibilidad de visualizar, añadir o eliminar elementos de esta. Para implementar las listas enlazadas se debe trabajar con dos tipos diferentes de variables: variables punteros, es decir, variables cuyos valores apuntan a otras variables, y variables referenciadas, o sea, variables que son apuntadas. IMPLEMENTACIÓN DE LISTAS ENLAZADAS La variable referenciada será un registro (Record) que tendrá por nombre Persona y estará formado por dos campos: Nombre para almacenar los nombres de las personas y Siguiente que se utilizará para apuntar al siguiente elemento de la lista. Para declarar y asociar la variable de tipo puntero a una variable referenciada se escribe: Nombre de la variable puntero = ˆ Nombre de la variable referenciada Type Apuntador = Persona; Persona = Record Nombre : String; Siguiente : Apuntador; End; Como ya conocemos las estructuras de datos son una colección de datos cuya organización se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos, estas estructuras sólo existen en la memoria RAM... cierras el programa o liberas la memoria que están ocupando y desaparecen los datos. Las listas son una secuencia de nodos, en los que se almacenan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. INVESTIGACION
La ventaja de es usar listas en una estructura de datos respecto a otros métodos
(vectores) es que el orden los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Las listas son un tipo de datos auto referenciados, existe un elemento que sirve de referencia a las operaciones de inserción, supresión y consulta. En una lista, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es nulo. Por ello los elementos son registros que contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos de una lista suelen recibir también el nombre de nodos de la lista. Para que esta estructura sea un TDA lista, debe tener unos operadores asociados que permitan la manipulación de los datos que contiene. Los operadores básicos de una lista enlazada son: Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta inserción al principio o final de la lista o bien en orden. Eliminar: elimina un nodo de la lista, puede ser según la posición o por el dato. Buscar: busca un elemento en la lista. Localizar: obtiene la posición del nodo en la lista. Vaciar: borra todos los elementos de la lista. Las listas en algunos casos se pueden lograr ahorros de memoria almacenando la misma ‘cola’ de elementos entre dos o más listas, es decir, la lista acaba en la misma secuencia de elementos Aunque una desventaja de las listas es el almacenamiento extra necesario para las referencias, que a menudos las hacen poco prácticas para listas de pequeños datos como caracteres o valores booleanos. Algo muy importante no todos los lenguajes de programación soportan listas por lo tanto antes de la implementación de estas debemos saber con si nuestro lenguaje de programación las tolera. CONCLUSIONES La implementación de las listas para la estructura de datos facilita la representación eficiente de los datos en la memoria de la computadora cuando la cantidad de elementos no es previsible por cuanto el uso de variables de tipo puntero permite crear y destruir variables referenciadas dinámicamente...