Top Banner
Estructura de Datos Lista, pila y cola Marielys Rodriguez G. 11-1075 Saira T. Isaac H. 11-1077
22
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Saiymari colas, filas y nos e que otra cosa

Estructura de Datos

Lista, pila y cola

Marielys Rodriguez G. 11-1075

Saira T. Isaac H. 11-1077

Page 2: Saiymari colas, filas y nos e que otra cosa

LISTA

Page 3: Saiymari colas, filas y nos e que otra cosa

Objetos reales que se pueden

modelar con la estructura lista

Lista de inventario

Lista de animales

Page 4: Saiymari colas, filas y nos e que otra cosa

Definiciones de lista

Una lista es una estructura de datos homogénea

y dinámica, que va a estar formada por una secuencia de

elementos, donde cada uno de ellos va seguido de otro o de

ninguno.

Lista: 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

Page 5: Saiymari colas, filas y nos e que otra cosa

TAD lista

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

Page 6: Saiymari colas, filas y nos e que otra cosa

Relación entre los conceptos:

Ventana y el de Lista

Con relación a las listas estas se pueden organizar en

manera ordenada y con respect a las ventanas, las

ventanas poseen características homogéneas al momento

de su desarrollo. Además aquí vemos cuales atributos y

operaciones se van a realizar.

Page 7: Saiymari colas, filas y nos e que otra cosa

Implementaciones de Listas

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.

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

Page 8: Saiymari colas, filas y nos e que otra cosa

Describir los mecanismos mediante los

cuales los lenguajes de programación

permiten implementar las listas.

Implementación Para representar en lenguaje C esta

estructura de datos se utilizarán punteros, un tipo de datos

que suministra el lenguaje. Se representará una lista vacía

con la constante NULL. Se puede definir la lista enlazada

de la siguiente manera: struct lista { int clave; struct

lista*sig; };

Page 9: Saiymari colas, filas y nos e que otra cosa

Describir cómo los lenguajes que no

manejan apuntadores simulan las

listas doblemente enlazadas.

Cada nodo apunta al siguiente y al anterior. Duplica el uso

de la memoria necesaria para los punteros. Duplica el coste

de manejo de punteros al insertar y eliminar. La

eliminación se simplifica . No es necesario buscar el

elemento anterior.

Page 10: Saiymari colas, filas y nos e que otra cosa

PILA

Page 11: Saiymari colas, filas y nos e que otra cosa

Objetos reales que se pueden

modelar con la estructura Pila

Almacén de libros

Agrupación de ladrillos

Cuando se montan y desmontan cajas de un camión

Page 12: Saiymari colas, filas y nos e que otra cosa

Definiciones de Pila

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.

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.

Page 13: Saiymari colas, filas y nos e que otra cosa

TAD Pila

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

Page 14: Saiymari colas, filas y nos e que otra cosa

Implementar las pilas a través

de listas y vectores

A traves de vectores:

En esta implementación se utiliza un objeto abstracto del TAD

Lista para representar una pila. El esquema de representación es

el siguiente:

La pila pil = se representa con la lista < e1, e2 ... eN>.

La pila vacía (pil = ) se representa internamente como una lista

sin elementos (pil = < >).

Page 15: Saiymari colas, filas y nos e que otra cosa

Un vector es una buena manera de representar una pila, si seconoce con anterioridad el número máximo de elementos que va acontener. Sólo se necesita algún medio para marcar el tope de lapila, puesto que los elementos se colocan en casillas consecutivasa partir de la primera.

La pila pil = se representa con la estructura:

La pila vacía pil = se representa con un cero en el campo que indica la posición del tope:

Page 16: Saiymari colas, filas y nos e que otra cosa

COLA

Page 17: Saiymari colas, filas y nos e que otra cosa

Cola de impression

Filas en Banco

Filas de los supermercados

Page 18: Saiymari colas, filas y nos e que otra cosa

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.

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.

Page 19: Saiymari colas, filas y nos e que otra cosa

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

Page 20: Saiymari colas, filas y nos e que otra cosa

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

Page 21: Saiymari colas, filas y nos e que otra cosa

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.

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.

Page 22: Saiymari colas, filas y nos e que otra cosa

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 )