Fila,pila y cola ..
-
Upload
evanyeline-brito -
Category
Documents
-
view
390 -
download
0
Transcript of Fila,pila y cola ..
Estructura de DatosLista,pila y cola
Evanyeline Brito 11-1029
LISTA
Evanyeline Brito 11-1029
Objetos reales que se pueden modelar con la estructura lista
O Lista de compra O Lista de invitados
Evanyeline Brito 11-1029
Definiciones de lista
O Una lista consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.
O Una lista es una colección homogénea de elementos con una relación lineal entre ellos. Es decir, cada elemento de la lista (excepto el primero) tiene un único elemento predecesor y cada elemento (excepto el último) tienen un elemento suceso
Evanyeline Brito 11-1029
Relación entre el concepto de VENTANA y el de Lista
O Se define la ventana de una lista como el lugar de la secuencia sobre el cual se van a realizar las operaciones que se apliquen al objeto abstracto. De cierta manera, se puede ver como el único punto de la lista visible al usuario. Esto implica que el TAD, además de las operaciones usuales, debe tener operaciones para mover la ventana, de tal manera que se pueda colocar sobre cualquier elemento de la lista y afectarlo de la manera deseada
Evanyeline Brito 11-1029
TAD lista
TAD ListOrd[ TipoLO ]e1, ..., en{ inv: ei ei+1, i 1 i < n }
Constructoras:inicListOrd: ListOrd
Modificadoras:insListOrd: ListOrd x TipoLO ListOrdelimListOrd: ListOrd x TipoLO ListOrd Analizadoras:infoListOrd: ListOrd x int TipoLOlongListOrd: ListOrd intestaListOrd ListOrd x TipoLO int
Evanyeline Brito 11-1029
Implementaciones de Listas
O Vectores : en esta representación, los elementos de la lista se sitúan consecutivamente en un vector. Maneja además dos campos adicionales que indican la longitud actual y la posición de la ventana.
O Listas doblemente enlazadas: en esta representación, la lista tiene un nodo con apuntadores al primer elemento, al último y al elemento de la ventana. Los nodos, por su parte, se encuentran doblemente encadenados entre sí, para permitir que las modificadoras se puedan implementar con algoritmos O( 1 )
Evanyeline Brito 11-1029
PILA
Evanyeline Brito 11-1029
Objetos reales que se pueden modelar con la estructura Pila
O Ejemplo:
En una torre de discos, para sacar el disco de hasta abajo, tienes que sacar primero todos los que están arriba de el, y es mas lata cuando no sabes que disco es, tienes que buscar de uno por uno e irlos sacando
Evanyeline Brito 11-1029
Definiciones de Pila
O Pilas son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el último en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila.
O Una pila es una estructura de datos en la cual solo se pueden hacer 2 operaciones : colocar elemento al final,o quitar un elemento del final.
Evanyeline Brito 11-1029
TAD Pila
TAD Pila[ TipoP ]{ inv: TRUE }
Constructoras:inicPila: Pila
Modificadoras:adicPila: Pila x TipoP PilaelimPila: Pila Pila Analizadoras:infoPila: Pila TipoPvaciaPila: Pila int Destructora:destruirPila: Pila
Evanyeline Brito 11-1029
Implementar las pilas a través de listas y vectores
A traves de lista :En esta implementación se utiliza un objeto abstracto del TAD Lista para representar una pila. El esquema de representación es el siguiente:O La pila pil = se representa con la lista <
e1, e2 ... eN>.O La pila vacía (pil = ) se representa
internamente como una lista sin elementos (pil = < >).
Evanyeline Brito 11-1029
Implementar las pilas a través de listas y vectores
A traves de vectores:Un vector es una buena manera de representar una pila, si se conoce con anterioridad el número máximo de elementos que va a contener. Sólo se necesita algún medio para marcar el tope de la pila, puesto que los elementos se colocan en casillas consecutivas a partir de la primera.O La pila pil = se representa con la estructura:
O La pila vacía pil = se representa con un cero en el
campo que indica la posición del tope:
Evanyeline Brito 11-1029
COLA
Evanyeline Brito 11-1029
Objetos reales que se pueden modelar con la estructura cola
O La cola de impresión
O Las filas que se hacen en los supermercados, cines, bancos, Etc.
Evanyeline Brito 11-1029
Definiciones de cola
O Una cola es una estructura de datos, en la cual solo se pueden aplicar estas dos operaciones : colocar un elemento al final, o quitar un elemento del principio.
O Se entiende por cola una estructura de datos en la que se añaden nuevos ítems en un extremo y se suprimen ítems viejos en el opuesto
Evanyeline Brito 11-1029
TAD Cola
TAD Cola[ TipoC ]{ inv: TRUE }
Constructoras:inicCola: Cola
Modificadoras:adicCola: Cola x TipoC ColaelimCola: Cola Cola Analizadoras:infoCola: Cola TipoCvaciaCola: Cola int Destructora:destruirCola: Cola
Evanyeline Brito 11-1029
Particularidades de un TAD COLA con prioridades
TAD ColaP[ TipoCP ][ x1«p1] [ x2«p2] .... [ xn«pn]{ inv: pi pk , i < k }
Constructoras:inicColaP: ColaP
Modificadoras:adicColaP: ColaP x TipoCP x int ColaPelimColaP: ColaP ColaP Analizadoras:infoColaP: ColaP TipoCPvaciaColaP: ColaP int Destructora:destruirColaP: ColaP
Evanyeline Brito 11-1029
Particularidades de un TAD COLA con prioridades
O La diferencia semántica está en que el elemento eliminado de la lista no es, necesariamente, el primero que fue añadido. Más bien, es el elemento de la cola que tiene la prioridad más alta. En la implementación de la Cola de Prioridad no se especifica ni qué son las prioridades ni cómo se comparan entre ellas. Depende de los elementos que haya en la cola.
O Por ejemplo, si los elementos de la cola tienen nombres, podemos elegirlos en orden alfabético. Si son puntuaciones de bolos, podemos ir desde la más alta hasta la más baja, pero si son puntuaciones de golf, iríamos desde la más baja hasta la más alta. Mientras podamos comparar los elementos de la cola, podremos encontrar y eliminar el de mayor prioridad.
Evanyeline Brito 11-1029
Implementaciones de COLAS con vectores circulares.
O Si se representa una cola con un vector, las rutinas que implementan las operaciones del TAD
tienen la siguiente complejidad:
La ineficiencia en la operación que elimina un elemento ( elimCola - O( n ) ) se debe a la necesidad de desplazar todos los elementos de la estructura, para ocupar el lugar liberado después de sacar el primero. Una posibilidad para evitar este movimiento es marcar los lugares dentro del arreglo donde comienza y termina la cola.
inicCola O( 1 )
adicCola O( 1 )
elimCola O( N )
infoCola O( 1 )
vaciaCola O( 1 )
Evanyeline Brito 11-1029