Listas Estructura de Datos Listas • • • Las listas se han utilizado desde los inicios del procesamiento de información. Es importante aclarar que además de su uso en diferentes aplicaciones, algunas estructuras de datos que están predefinidas en lenguajes de programación se comportan como listas. o Es el caso de de las hileras o cadenas de caracteres. o Archivos secuenciales. o Los arreglos. Las listas pueden clasificarse por diferentes aspectos como: o Conformación o Forma de almacenamiento o Forma de acceso Lista Lineal y Lista No Lineal • • Una lista lineal, es aquella en la que cualquiera de sus nodos tiene un único inmediato sucesor y un único inmediato antecesor, excepto el primer nodo de la lista (que no tiene antecesor) y el último (que carece de sucesor). Una lista no lineal, es aquella en la que cualquier nodo tiene más de un antecesor o más de un sucesor. Lista Abierta y Lista Cerrada • • Las listas abiertas son aquellas en las que el ultimo nodo no tiene sucesor, por lo general se cuenta con un indicador que determina el final de la lista. Las listas cerradas son aquellas en las que el ultimo nodo se enlaza al primero, creando una lista circular. Listas almacenadas en secuencia • • Estas listas se caracterizan porque la posición de almacenamiento de cualquier nodo “k+1” es igual a la posición del nodo “k” más la longitud del nodo “k”, lo que implica un espacio de almacenamiento continuo para la lista. A estas, se les denomina como “listas secuenciales”. Listas encadenadas • • • En esta, los nodos se encuentran dispersos en el medio de almacenamiento, pero cada uno de ellos contiene un apuntador (pointer), que almacena la dirección del siguiente nodo. La lista contiene una cabeza o punto de entrada, que puede ser el primer nodo perteneciente a la lista. (En algunos casos, se inserta un nodo adicional denominado “guía”.) Por lo tanto, es importante almacenar la dirección del nodo de entrada a la lista para acceder a ella. Lista de acceso restringido • • • Esta clase de listas se caracteriza porque no se puede tener acceso sino a los nodos que se encuentren en los extremos de las mismas. Estas tienen un uso muy frecuente. Estas pueden ser secuenciales o encadenadas, y se conocen como “pila”, “cola” y “doble cola”. ISC Gregorio García Estrada Listas Estructura de Datos Operaciones con listas • • En las listas se pueden efectuar operaciones, que por lo regular se implementan por medio de algoritmos, dependiendo del tipo de lista y su aplicación. Algunas de esas funciones pueden ser: o Agregar un nodo a la lista. o Eliminar un nodo de la lista. o Recorrer la lista. o Cambiar el contenido de un nodo. o Determinar el número de nodos de la lista. o Buscar un nodo con determinada información. o Copiar una lista. o Ordenar los nodos de acuerdo con el contenido de un campo. o Unir varias listas. o Partir la lista en varias sublistas. Lista de pila almacenada en secuencia • • • • • • Es una lista lineal que se almacena en una serie sucesiva, continua, de celdas. En esta solo se tiene acceso a un extremo de la lista, por lo tanto la consulta, las inserciones y eliminaciones se llevan a cabo sólo por ese extremo. Por este comportamiento recibe el nombre de una lista de tipo “LIFO” (Last In First Out) o Esto significa que el último elemento en entrar, es el primero en salir. o También se denomina lista de “Stack”. Esta requiere de un solo “apuntador”. Este indica a que elemento tiene acceso. Algunas de las aplicaciones que utilizan este tipo pueden ser: o Algunos sistemas de consulta. o Algunos sistemas de control de inventario. o Computadoras de tipo pila. o La memoria humana. Se pueden realizar estas operaciones básicas: o Inserción de elementos: PUSH o Eliminación de elementos: POP o Consulta del elemento que se encuentra en el tope: TOP ISC Gregorio García Estrada