fila,pila y cola

20
Estructura de Datos Lista,pila y cola Evanyeline Brito 11-1029

Upload: evanyeline-brito

Post on 04-Aug-2015

390 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fila,pila y cola

Estructura de DatosLista,pila y cola

Evanyeline Brito 11-1029

Page 2: Fila,pila y cola

LISTA

Evanyeline Brito 11-1029

Page 3: Fila,pila y cola

Objetos reales que se pueden modelar con la estructura lista

O Lista de compra O Lista de invitados

Evanyeline Brito 11-1029

Page 4: Fila,pila y cola

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

Page 5: Fila,pila y cola

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

Page 6: Fila,pila y cola

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

Page 7: Fila,pila y cola

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

Page 8: Fila,pila y cola

PILA

Evanyeline Brito 11-1029

Page 9: Fila,pila y cola

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

Page 10: Fila,pila y cola

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

Page 11: Fila,pila y cola

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

Page 12: Fila,pila y cola

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

Page 13: Fila,pila y cola

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

Page 14: Fila,pila y cola

COLA

Evanyeline Brito 11-1029

Page 15: Fila,pila y cola

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

Page 16: Fila,pila y cola

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

Page 17: Fila,pila y cola

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

Page 18: Fila,pila y cola

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

Page 19: Fila,pila y cola

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

Page 20: Fila,pila y cola

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