Unidad 3Estructuras Lineales Subtemas Listas Operaciones básicas con listas. Tipos de listas. Listas simplemente enlazadas. Listas doblemente enlazadas. Listas circulares. Aplicaciones. Subtemas Pilas. Representación en memoria estática y dinámica. Operaciones básicas con pilas. Aplicaciones. Notación infija y postfija. Recursividad con ayuda de pilas. Tipos de colas: Cola simple. Aplicaciones: Colas de prioridad. Operaciones básicas con colas. Cola circular y Colas dobles. Representación en memoria estática y dinámica. . Colas. identificar y aplicar las estructuras lineales en la solución de problemas del mundo real. .Competencia Conocer. Evaluación Asistencia 5% Portafolio 5% Examen 40% Prácticas de la Unidad 35% Tareas 15% . Un evaluador de expresiones posfijas que funciona sobre expresiones aritméticas que tienen esta forma: op1 op2 operador….Prácticas de la Unidad Desarrollar programa que simule una lista de espera para la asignación de mesas en un restaurante. . Desarrollar programa que simule la salida de aviones en un aeropuerto utilizando colas de prioridad. Usando dos pilas. una para los operandos y una para los operadores. Diseña e implementa una clase Calculadora que convierta expresiones infijas a expresiones posfijo y después utiliza las pilas para evaluar las expresiones. Listas . Listas Es un tipo de estructura lineal y dinámica Lineal porque a cada elemento le puede seguir sólo otro elemento Dinámica porque se puede manejar la memoria de manera flexible. sin necesidad de reservar memoria con antelación . (Joyanes) . El orden de éstos se establece por medio de un tipo de dato denominado puntero. (Cairo) Es una colección o secuencia de elementos dispuestos uno detrás de otro.Listas Ligadas o enlazadas Son colecciones de elementos llamados nodos. dirección o referencia a otros nodos. en la que cada elemento se conecta al siguiente elemento por un “enlace” o “referencia”. apuntador. ).Listas enlazadas La idea básica consiste en construir una lista cuyos elementos. se componen de dos partes (campos): La primera parte contiene la información y es. Info. TipoElemento. llamados nodos. etc. por consiguiente. un valor de un tipo genérico (denominado Dato. La segunda parte es una referencia (denominado enlace o sgte) que apunta (enlaza) al siguiente elemento de la lista . . Representación del último nodo . En resumen… Una lista enlazada consta de un número de elementos. y cada elemento tiene dos componentes (campos). una referencia al siguiente elemento de la lista y un valor. que puede ser de cualquier tipo . Listas doblemente enlazadas Lista circular simplemente enlazada Lista circular doblemente enlazada .Clasificación de las listas enlazadas Listas simplemente enlazadas. . La lista es eficiente en recorridos directos (“adelante”).Lista Simplemente enlazada Cada nodo (elemento) contiene un único enlace que lo conecta al nodo siguiente o nodo sucesor. uno a su nodo predecesor y otro a su nodo sucesor. .Listas doblemente enlazadas Cada nodo contiene dos enlaces. La lista es eficiente tanto en recorrido directo (“adelante”) como en recorrido inverso (“atrás”). Lista circular simplemente enlazada Una lista enlazada simplemente en la que el último elemento (cola) se enlaza al primer elemento (cabeza) de tal modo que la lista puede ser recorrida de modo circular (“en anillo”). . . Esta lista se puede recorrer de modo circular (“en anillo”) tanto en dirección directa (“adelante”) como inversa (“atrás”).Lista circular doblemente enlazada Una lista doblemente enlazada en la que el último elemento se enlaza al primer elemento y viceversa. de una lista es el nodo apuntado por cabeza. La lista se recorre desde el primero al último nodo. . Una lista vacía (no contiene nodos). La lista encadena nodos juntos desde el frente al final (cola) de la lista. frente. se representa con el puntero cabeza con nulo (null). La implementación de cada uno de los cuatro tipos de estructuras de listas se puede desarrollar utilizando referencias. El primer nodo. El final se identifica como el nodo cuyo campo referencia tiene el valor null. en cualquier punto del recorrido la posición actual se referencia por el puntero (pointer) actual. a partir o antes de un nodo determinado de la lista. Las eliminaciones también se pueden realizar en cualquier punto. con la característica de que puede contener un número indeterminado de elementos y que estos elementos mantienen un orden explícito. se eliminan nodos dependiendo del campo de información o dato que se desea suprimir de la lista. Este ordenamiento explícito implica que cada elemento (un nodo de la lista) contiene la dirección del siguiente elemento. aumentando por inserciones o disminuyendo por eliminación de nodos Las inserciones se pueden realizar por cualquier punto de la lista: por la cabeza (inicio). . Una lista se utiliza para almacenar información del mismo tipo. por el final. además. El número de nodos puede variar rápidamente en un proceso. . Recorrer la lista enlazada.Operaciones en las listas enlazadas Inicialización o creación. Eliminar elementos de la lista. Insertar elementos en la lista. Buscar elementos de la lista. Comprobar si la lista está vacía. en primer lugar. declarar la clase Nodo. la clase “Lista” debe tener las operaciones y el atributo con la cabeza de la lista . Además. real.Implementación La implementación del TAD “Lista” requiere. carácter. cadena o referencias a objetos) y un enlace. doble. en la que se combinarán sus dos partes: el dato (entero. En Java. se declara una clase para contener las dos partes del nodo: dato y enlace. Una lista enlazada se compone de una serie de nodos enlazados mediante referencias. . la clase Nodo es: class Nodo{ int dato. Nodo enlace. } } . public Nodo(int t) { dato = t. Por ejemplo. enlace = null. para una lista enlazada de números enteros. En ocasiones. cola= null.Acceso a la lista: cabecera y cola Cuando se construye y se utiliza una lista enlazada en una aplicación. El último nodo es la cola de la lista. Una referencia al primer nodo se llama referencia cabeza. llamado cabeza o cabecera de la lista. Nodo cola. y una referencia al último nodo es la referencia cola. se mantiene también una referencia al último nodo de la lista enlazada. se accede a partir del primer nodo de la lista. Normalmente. el acceso a la lista se hace mediante una o más referencias a los nodos. . . se inicializa a null. cuando se inicia la construcción de una lista. Cualquier método que se escriba para implementar listas enlazadas debe poder manejar un referencia de cabeza (y de cola) null.NOTA La referencia cabeza (y cola) de una lista enlazada. normalmente. . indica lista vacía (no tiene nodos). Normalmente. Los métodos de la clase Lista implementan las operaciones de una lista enlazada: inserción.. la clases Nodo y Lista. El constructor de Lista inicializa primero a null (lista vacía). el método crearLista(). Además. referencia a Nodo. no es necesario definir el atributo referencia cola.. al menos. para acceder a los elementos de la lista. La clase Lista define el atributo cabeza o primero. construye iterativamente el primer elemento (primero) y los elementos sucesivos de una lista enlazada . La creación de una lista enlazada entraña la definición de. búsqueda. int dato. public int getDato() public class Nodo { { return dato. public void setEnlace(Nodo enlace) } { public Nodo(int x. Nodo n) this.enlace = enlace. { dato = x. } Nodo enlace.package ListaEnteros. enlace = n. } { dato = x. } } . } enlace = null. public Nodo getEnlace() public Nodo(int x) { return enlace.