Estruturas de Dados
Algoritmos
5° edicaoee
1 Cartilha de Java... 60-66
14
12
13
14
15
16
17
18
19
4.10
2 Projeto Orientado a Objetos ....---
24
Sumario
1
Iniciando: classes, tipos e objetos 2
1.1.1 Tipos bésicos...... ee roe
1.1.2 Objetos 7
1.1.3 Tipos enumerados. 14
Métodos. 15
Expressées ...-- = 20
1.3.4 Literais. de eee 20)
4.3.2 Operadores .... 0... 00sec reece eeee eens Pee!
1.3.3 Conversores e autoboxing/unboxing ‘em express6es 25
Controle de fluxo. poeea 27
1.4.1 Oscomandosif e switch... .. ed
1.4.2 LAGOS... 0.260 5 + 29
1.4.3 Expressdes explicitas de controla defuX0...eaesereeeeee Bt
Arranjos... ero eeek entice 33
1.5.1 Declarando arranjos. .. . 35
1.5.2 Arranjos sdo objetos 36
Entrada e safda simples... . - 38
Um programa de exemplo .. .- . 42
Classes aninhadas e pacotes «.. 45
Escrevendo um programa em Java. 47
1.9.1 Projeto.
1.9.2 Pseudocddigo
1.9.3 Codificagao
1.9.4 Teste e depuragao
Exercicios ..
Objetivos, principios e padrées.....-
2.1.1 Objetivos do projeto orientado a objetos -....- 60
2.1.2 Principios de projeto orientado a objetos .....-----.---+- 61
2.1.3 Padrées de projeto .....-.- pas . 64Sumdrio
5.3.3 Deques no framework de colegdes de Java cece eses 230
5.4 Exercicios ... 39231
G6. Listas olteradores i.0c cc: cee ec cece cee ecctens se se5s 287
6.1. Listas arranjo ..... : + 238
6.1.1 O tipo abstrato de dados lista arranjo . 238
6.1.2 Opadrao adaptador ........ : -. 239
6.1.2 Umaimplementacdo simples usando arranjo. - 240
6.1.4 Ainterface simples e a classe java.util ArrayList . 242
6.1.5 Implementando uma lista arranjo usando arranjos
@MENENES sss cree ene. a 243
6.2 Listas denodos........ eopooscaccocoogn £2.t/
6.2.1 Operagdes baseadas em nodos 247
62.2 Posigdes 2a7
6.2.3 0 tipo abstrato de dados lista de nodes. - 248
6.2.4 Implementagdo usando lista duplamente encadeada...... 252
6.3 Iteradores ...... ee euere sea 257
6.3.1 Os tipos abstratos de dados iterador e iteravel.. . . 287
63.2 Olago de Java para-cada... 259
63.3 _Implementando iteradores. = 260
6.3.4 Iteradores de lista em Java . - 262
6.4 Os TADS de lista e o framework de colegées. - 263
6.4.1 Listas no framework de colegdes de Java. eet | 26d)
64.2 Sequéncias ....... coo tte ss re 287
6.5 Estudo de caso: a heuristica mover-para-frente . 269
6.5.1 Usando uma lista ordenada e uma classe aninhada........ 270
6.5.2 Usando uma lista com a heuristica mover-para-frente ...... 272
6.5.3 Possiveis usos de uma lista de favoritos. . 274
6.6 Exercicios . 276
7 Arvores....... Sew erecennseertieesesseeds 263
7.1 Arvores genéricas. ... weeeeee 284
7.11 Definigdo de arvore e propriedades. ..... ceeeeeees 284
7.1.2 Otipo abstrato de dados drvore ........ . 287
7.1.3 Implementando uma arvore - 288
7.2 Algoritmos de caminhamento em arvores ..
7.2.1 Altura e profundidade ......... 291
7.2.2 Caminhamento prefixado 293
7.2.3 Caminhamento pés-fixado .... 296
7.3 Arvores bindrias .....
7.3.1 OTAD arvore binaria
= 601Sumario _ xix
7.3.2 Umainterface de arvore bindria em Java 302
7.3.3 Propriedades de arvores bindrias 7 302
7.3.4 Estruturas encadeadas para arvores bindrias ... .. 304
7.3.5 Uma estrutura baseada em lista arranjo para arvores
bindtiag’ scc.e- sede eae 313
7:36 Gaminhamentos sobre érvores bindrias eee oo)
7.3.7 Opadrao do método modelo ...-..-. +++ ce vee eee s 822
74 Exercicios ...
Heaps e Filas de Prioridade . .
8.1 O tipo abstrato de dados fila de p
8.1.1 Chaves, prioridades e relagdes de ordem total . 338
8.1.2 _ Entradas e comparadores 339
8.1.3 OTAD fila de prioridade. oe . 341
8.1.4 Ordenando com uma fila de prioridade....... 342
8.2 Implementando uma fila de prioridade com listas . .. 343
8.2.1 Implementagao de uma fila de prioridade em Java
usando uma lista... . - 345
8.2.2 Selection sorte insertion sort . . 347
83 Heaps... oe wee 349
83.1 Aestrutura de dados heap - -- 350
8.3.2 Arvores bindrias completas e suas representagdes. 852
8.3.3 Implementando uma fila de prioridade com um heap. . 357
8.3.4 Implementagao em Java ... - 362
83.5 Heapsort .....-- 6.0 . 365
8.3.6 — Construgao bottom-up do roe a coves 367
ilas de prioridade adaptaveis. . . - 370
8.4.1 Usando a classe java.util-PriorityQueue . 371
8.4.2 Entradas conscientes de localizagao. . 372
8.4.3 Implementando uma fila de prioridade adaptavel a . 374
8.5 Exercicios .. iiseessosn 876
Tabelas de Hash, Mapas e Skip Lists ........-...-++2+++ 385
9.1 Mapas .. - 386
9.1.1 OTAD mapa... Eee 387
9.1.2 Umaimplementagao simples de mapa... + 388
9.2 Tabelas de hash ..
9.2.1 Arranjo de buckets
9.2.2 Fungdes de hash...
92.3 Cédigosdehash........
9.2.4 Fungdes de compressdo
- 390
.. 391
- 395xxii
Sumario
13 Algoritmos GrafoS........2++ceeeccceereceerseeeeses 587
ABH Grafos 02.2 ---cnann 598
13.1.4 OTADgrafo...... 602
18.2. Estruturas de dados para grafos...... 603
13.2.1 Alista de arestas . . 603
13.22 Alista de adjacéncias - 606
13.2.3 Aestrutura da matriz de adjacéncia . 608
13.3 Caminhamento em grafos . 610
13.3.1 Pesquisa em profundidade : 610
133.2 _Implementando a pesquisa em profuncidade. . 614
13.3.3 Caminhamento em targura. seve s 622
13.4 Grafos Ere 628
13.4.1 Caminhamento em um digrafo . . 627
13.4.2 Fechamento transitive. 630
13.4.3 Grafos aciclicos dirigidos. 633
13.5 Caminhos minimos.. eee 035
13.5.1 Grafos ponderados 637
13.5.2 Oalgoritmo de Dijkstra 638
13.5.3 Uma implementagao alternativa do algoritmo de Dijkstra... 644
13.6 Arvores de cobertura minima . . . 647
13.6.1. Algoritmo de Kruskal....... ++ 649
13.6.2 Qalgoritmo Prim-Jamnik. ... . 653
18.7 Exercicios ......... 000000
14° Memoria...........+
14.1 Gerenciamento de meméria .... :
14.1.1 Pithas na maquina virtual de Java... 668
14.1.2 Alocando espago na meméria heap Be (iA)
14.1.3 Coleta de lixo . 673
14.2 Meméria externa e caching 675
14.2.1 Abierarquia de meméria -. 675
14.22 Estratégias de cache. . 677
14.3. Pesquisa externa e arvores B . 681
14.3.1 Arvores (a,b)... 682
14.3.2 Arvores B. - 684
14.4 Ordenando meméria externa. ....
14.4.1. Merge genérico ..... 686
14.5 Exercicios . aeences- (687,
A Fatos Matematicos Uteis .........---..+--00e eee ees 694
Bibliografia. .
indice.
+. 699
++ 705