3. O Lista de compra
O Lista de invitados
Evanyeline Brito 11-1029
4. 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
5. 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
6. 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
7. 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
9. 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
10. 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
12. 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
13. 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
15. O La cola de impresión
O Las filas que se hacen en los
supermercados, cines, bancos, Etc.
Evanyeline Brito 11-1029
16. 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
17. 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
18. 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
19. 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
20. I
.
O Si se representa una cola con un vector, las rutinas que
implementan las operaciones del TAD tienen la
siguiente complejidad:
inicCola O( 1 )
adicCola O( 1 )
elimCola O( N
)
infoCola O( 1 )
vaciaCola O( 1 )
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.
Evanyeline Brito 11-1029