Fila,pila y cola ..

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

Transcript of Fila,pila y cola ..

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 ..

O Lista de compra

O Lista de invitados

Evanyeline Brito 11-1029

Page 4: Fila,pila y cola ..

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 ..

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 ListOrd[ TipoLO ]

e1, ..., en

{ inv: ei ei+1, i 1 i < n }

Constructoras:

inicListOrd: ListOrd

Modificadoras:

insListOrd: ListOrd x TipoLO ListOrd

elimListOrd: ListOrd x TipoLO ListOrd

Analizadoras:

infoListOrd: ListOrd x int TipoLO

longListOrd: ListOrd int

estaListOrd ListOrd x TipoLO int

Evanyeline Brito 11-1029

Page 7: Fila,pila y cola ..

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 ..

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 ..

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[ TipoP ]

{ inv: TRUE }

Constructoras:

inicPila: Pila

Modificadoras:

adicPila: Pila x TipoP Pila

elimPila: Pila Pila

Analizadoras:

infoPila: Pila TipoP

vaciaPila: Pila int

Destructora:

destruirPila: Pila

Evanyeline Brito 11-1029

Page 12: Fila,pila y cola ..

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 ..

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 ..

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 ..

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[ TipoC ]

{ inv: TRUE }

Constructoras:

inicCola: Cola

Modificadoras:

adicCola: Cola x TipoC Cola

elimCola: Cola Cola

Analizadoras:

infoCola: Cola TipoC

vaciaCola: Cola int

Destructora:

destruirCola: Cola

Evanyeline Brito 11-1029

Page 18: Fila,pila y cola ..

TAD ColaP[ TipoCP ]

[ x1«p1] [ x2«p2] .... [ xn«pn]

{ inv: pi pk , i < k }

Constructoras:

inicColaP: ColaP

Modificadoras:

adicColaP: ColaP x TipoCP x int ColaP

elimColaP: ColaP ColaP

Analizadoras:

infoColaP: ColaP TipoCP

vaciaColaP: ColaP int

Destructora:

destruirColaP: ColaP

Evanyeline Brito 11-1029

Page 19: Fila,pila y cola ..

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 ..

I.

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