Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1. Introduccin
Tema 2. Anlisis de Algoritmos
Tema 3. Listas
Tema 4. Pilas y Colas
Tema 5. rboles
Tema 6. TDAs ordenados
Tema 7. Mapas
Tema 8. Conjuntos, Bolsas y Listas sin repeticin
Tema 9. Grafos
Estructuras de Datos
M. Aldea
Oct-13
TDA Pila
Implementacin de Pilas basada en array
Implementacin de Pilas basada en celdas enlazadas
TDA Cola
Implementacin de Colas basada en array circular
Implementacin de Colas basada en celdas enlazadas
Comparacin de las implementaciones
Pilas y Colas en Java Collections Framework
Bibliografa
Estructuras de Datos
M. Aldea
Oct-13
Objetivos
Conocer los TDAs Pila y Cola
Conocer las tcnicas bsicas de implementacin de Pilas y
Colas: basadas en array y basadas en estructuras enlazadas
Conocer las ventajas e inconvenientes de las distintas tcnicas
de implementacin de acuerdo a su complejidad espacial y
temporal
Conocer el soporte proporcionado para Pilas y Colas en las
Java Collections
Saber elegir el TDA Pila o Cola y su implementacin que mejor
satisfaga los requisitos de una aplicacin
Estructuras de Datos
M. Aldea
Oct-13
cima
cima
cima
D
C
B
A
apila(E)
E
D
C
B
A
F
E
D
C
B
A
apila(F)
cima
E
D
C
B
A
desapila()
M. Aldea
Oct-13
Estructuras de Datos
Estructuras de Datos
Implementaciones de pilas
E
<<interface>>
Pila
+apila(e: E)
+desapila(): E
+cima(): E
+haceVaca(): void
+tamao(): Entero
+estVaca(): Bool
E
PilaArray
Estructuras de Datos
E
PilaSimpleEnlace
M. Aldea
Oct-13
Uso de pilas
Pila de platos para fregar
-platos
PlatosParaFregar
Plato
*
<<PilaArray>>
{ordered, nonunique}
+dejaPlato(p: Plato)
+cogePlato():Plato
+registraOp(Op: OperacinDeEdicin)
+ltimaOp(): OperacinDeEdicin
*
{ordered, nonunique}
-operaciones
OperacinDeEdicin
M. Aldea
Oct-13
Estructuras de Datos
...
cima=c
parte libre
c+1
c
c-1
Elemento ms nuevo
Segundo elemento ms nuevo
...
parte ocupada
1
0
elementos
Estructuras de Datos
M. Aldea
Oct-13
Estructuras de Datos
M. Aldea
Oct-13
procedimiento haceVaca()
cima := -1
fprocedimiento
procedimiento tamao(): Entero
retorna cima + 1
fprocedimiento
procedimiento estVaca(): Booleano
retorna cima = -1
fprocedimiento
procedimiento cima(): Elemento
si estVaca() entonces
error
fsi
retorna elementos[cima]
fprocedimiento
M. Aldea
Oct-13
Estructuras de Datos
10
cima
apila(d)
cima
desapila() retorna d
cima
a
M. Aldea
Oct-13
Estructuras de Datos
11
frente
final
encola(e)
frente
final
desencola() retorna a
b
frente
Estructuras de Datos
e
final
M. Aldea
Oct-13
12
Estructuras de Datos
13
Implementaciones de colas
E
<<interface>>
Cola
+encola(e: E)
+desencola(): E
+frente(): E
+haceVaca(): void
+tamao(): Entero
+estVaca(): Bool
ColaArray
ColaSimpleEnlace
M. Aldea
Oct-13
Estructuras de Datos
14
Uso de colas
Cola de la caja de un supermercado
-clientes
ClientesCaja
Cliente
*
<<ColaArray>>
{ordered}
TrabajoImpresin
*
<<ColaSimpleEnlace>>
{ordered, nonunique}
Estructuras de Datos
M. Aldea
Oct-13
15
10
frente=6
11
12
13
14
15
final=10
10
final=3
11
12
13
14
15
frente=14
M. Aldea
Oct-13
Estructuras de Datos
16
encola(c)
frente
final
6
a
final
desencola()a
frente
6
desencola()b
final
0
frente
c
desencola()c
final
frente
frente
final
M. Aldea
Oct-13
Estructuras de Datos
17
Estructuras de Datos
M. Aldea
Oct-13
18
frente
final
final
frente
frente
final
Estructuras de Datos
19
frente
tamao=0
final
Estructuras de Datos
M. Aldea
Oct-13
20
M. Aldea
Oct-13
21
Estructuras de Datos
22
frente
encola(d)
frente
final
desencola() a
final
frente
d
M. Aldea
Oct-13
Estructuras de Datos
23
Estructuras de Datos
final
null
frente
M. Aldea
Oct-13
24
final
numEle++
final.siguiente := nuevaCelda
final := nuevaCelda
fprocedimiento
frente
encola(z)
final
a
frente
final
desencola()
final
a
frente
M. Aldea
Oct-13
Estructuras de Datos
25
final
a
procedimiento haceVaca()
numEle := 0
frente := final
fprocedimiento
frente
haceVaca()
final
a
frente
M. Aldea
Oct-13
Estructuras de Datos
26
apila/encola
O(1)
desapila/desencola
O(1)
cima/frente
O(1)
tamao
O(1)
haceVaca
O(1)
estVaca
O(1)
Estructuras de Datos
M. Aldea
Oct-13
27
Caractersticas generales:
Caracterstica
Array
Lista Enlazada
Requisitos de memoria
Fcil crecimiento
No, requiere
redimensionado y copia
S, puesto que
no est acotada
Aprovechamiento de la
memoria
Desperdicia
memoria
Usa la memoria
justa
M. Aldea
Oct-13
Estructuras de Datos
28
Iterable
E
<<interface>>
Collection
Cola
JCF NO incluye la
interfaz Stack (Pila)
E
<<interface>>
Queue
Pila
E
LinkedList
M. Aldea
Oct-13
Estructuras de Datos
29
Pilas en JCF
JFC no incluye ninguna interfaz especfica para las pilas
Utilizaremos LinkedList
-platos
PlatosParaFregar
Plato
*
<<LinkedList>>
+dejaPlato(p: Plato)
+cogePlato():Plato
{ordered, nonunique}
Estructuras de Datos
M. Aldea
Oct-13
30
// haceVaca
int size();
// tamao
M. Aldea
Oct-13
Estructuras de Datos
31
Colas en JCF
Interfaz Queue, utilizando su implementacin LinkedList
-trabajos
TrabajosPendientes
TrabajoImpresin
*
<<LinkedList>>
{ordered, nonunique}
Estructuras de Datos
M. Aldea
Oct-13
32
M. Aldea
Oct-13
33
4.9 Bibliografa
[1] Michael T. Goodrich, Roberto Tamassia, Data structures and
algorithms in Java. John Wiley & Sons, 2006.
[2] Aho A.V., Hopcroft J.E., Ullman J.D., Estructuras de datos y
algoritmos. Addison-Wesley, 1988.
[3] Weiss, Mark Allen, Data Structures and Algorithm Analysis in
Java. Pearson Education, 2007.
[4] Weiss, Mark Allen, Estructuras de datos y algoritmos.
Addison-Wesley Iberoamericana, 1995.
[5] Sahni, Sartaj, Data structures, algorithms, and applications in
Java. McGraw Hill, 2000
[6] The Java Tutorials: Collections
http://docs.oracle.com/javase/tutorial/collections/index.html
Estructuras de Datos
M. Aldea
Oct-13
34