Índice
Capítulo 1 Introdução 1
1.1 Conceitos básicos de estrutura de dados 1
1.1.1 Conceitos básicos e terminologia 1
1.1.2 Três Elementos da Estrutura de Dados 2
1.1.3 Perguntas selecionadas desta seção 3
1.1.4 Respostas e explicações 4
1.2 Algoritmos e Avaliação de Algoritmos 4
1.2.1 Conceitos básicos de algoritmos 4
1.2.2 Medindo a eficiência do algoritmo 5
1.2.3 Perguntas selecionadas nesta seção 6
1.2.4 Respostas e Análise 8
Resumo 11
Pensando 11
Capítulo 2 Tabela Linear 12
2.1 Definição e operações básicas de listas lineares 12
2.1.1 Definição de Lista Linear 12
2.1.2 Operações básicas de tabelas lineares 13
2.1.3 Perguntas selecionadas nesta seção 13
2.1.4 Respostas e Análise 14
2.2 Representação sequencial de listas lineares 14
2.2.1 Definição da Lista de Sequências 14
2.2.2 Implementação de operações básicas em listas de sequências 15
2.2.3 Perguntas selecionadas desta seção 18
2.2.4 Respostas e Análise 20
2.3 Representação em cadeia de listas lineares 30
2.3.1 Definição de uma lista encadeada simples 30
2.3.2 Implementação de operações básicas em listas encadeadas simples 31
2.3.3 Lista Duplamente Encadeada 35
2.3.4 Lista Circular Encadeada 37
2.3.5 Lista de Links Estáticos 37
2.3.6 Comparação de lista de sequências e lista encadeada 38
2.3.7 Perguntas selecionadas desta seção 39
2.3.8 Respostas e Análise 45
Resumo 62
Expansão do Pensamento 63
Capítulo 3 Pilhas, Filas e Matrizes 64
3.1 Pilha 64
3.1.1 Conceitos básicos do Stack 64
3.1.2 Estrutura de armazenamento sequencial da pilha 65
3.1.3 Estrutura de armazenamento em cadeia da pilha 68
3.1.4 Perguntas selecionadas desta seção 68
3.1.5 Respostas e Análise 71
3.2 Fila 78
3.2.1 Conceitos básicos de filas 78
3.2.2 Estrutura de armazenamento sequencial da fila 78
3.2.3 Estrutura de armazenamento em cadeia de filas 81
3.2.4 Fila dupla 82
3.2.5 Perguntas selecionadas desta seção 84
3.2.6 Respostas e Análise 87
3.3 Aplicação de pilhas e filas 92
3.3.1 Aplicação de pilha em correspondência de colchetes 92
3.3.2 O uso de pilhas na avaliação de expressões 93
3.3.3 Aplicação de pilha em recursão 95
3.3.4 Aplicação de Filas em Travessia de Nível 96
3.3.5 Aplicação de Filas em Sistemas Computacionais 97
3.3.6 Perguntas selecionadas desta seção 97
3.3.7 Respostas e Análise 100
3.4 Matrizes e Matrizes Especiais 104
3.4.1 Definição do Array 104
3.4.2 Estrutura de armazenamento de matriz 104
3.4.3 Armazenamento compactado de matrizes especiais 105
3.4.4 Matrizes esparsas 107
3.4.5 Perguntas selecionadas desta seção 108
3.4.6 Respostas e Análise 109
Resumo 111
Pensando 112
Capítulo 4 String 113
*4.1 Definição e implementação de strings 113
4.1.1 Definição de String 113
4.1.2 Estrutura de armazenamento de strings 114
4.1.3 Operações básicas de string 115
4.2 Correspondência de padrões de strings 115
4.2.1 Algoritmo de correspondência de padrões simples 115
4.2.2 Algoritmo de correspondência de padrões de string - Algoritmo KMP 116
4.2.3 Otimização adicional do algoritmo KMP 121
4.2.4 Perguntas selecionadas desta seção 122
4.2.5 Respostas e Análise 123
Resumo 127
Pensando 127
Capítulo 5 Árvores e Árvores Binárias 128
5.1 Conceitos básicos de árvores 128
5.1.1 Definição de uma árvore 128
5.1.2 Terminologia básica 129
5.1.3 Propriedades das Árvores 130
5.1.4 Perguntas selecionadas desta seção 131
5.1.5 Respostas e Análise 131
5.2 O conceito de árvore binária 134
5.2.1 Definição e principais características da árvore binária 134
5.2.2 Estrutura de armazenamento de árvores binárias 136
5.2.3 Perguntas selecionadas desta seção 137
5.2.4 Respostas e Análise 140
5.3 Percurso de Árvore Binária e Árvores Binárias Encadeadas 145
5.3.1 Percorrendo uma árvore binária 145
5.3.2 Árvore Binária Threaded 151
5.3.3 Perguntas selecionadas desta seção 154
5.3.4 Respostas e explicações 160
5.4 Árvores e florestas 179
5.4.1 Estrutura de armazenamento em árvore 179
5.4.2 Transformação entre árvores, florestas e árvores binárias 181
5.4.3 Atravessando árvores e florestas 182
5.4.4 Perguntas selecionadas desta seção 183
5.4.5 Respostas e explicações 185
5.5 Aplicações de Árvores e Árvores Binárias 201
5.5.1 Árvore de Huffman e codificação de Huffman 201
5.5.2 União-Localizar 194
5.5.3 Perguntas selecionadas desta seção 196
5.5.4 Respostas e Análise 198
Resumo 204
Pensando 204
Capítulo 6 Figura 206
6.1 Conceitos básicos de gráficos 206
6.1.1 Definição do Gráfico 206
6.1.2 Perguntas selecionadas desta seção 210
6.1.3 Respostas e Análise 211
6.2 Armazenamento de gráficos e operações básicas 214
6.2.1 Método da Matriz de Adjacência 214
6.2.2 Método da Lista de Adjacência 215
6.2.3 Lista de Links Cruzados 217
6.2.4 Multilista de Adjacência 217
6.2.5 Operações básicas em gráficos 218
6.2.6 Perguntas selecionadas desta seção 219
6.2.7 Respostas e Análises 222
6.3 Percurso de gráfico 227
6.3.1 Busca em largura 227
6.3.2 Busca em profundidade 230
6.3.3 Percurso de grafos e conectividade de grafos 231
6.3.4 Perguntas selecionadas desta seção 231
6.3.5 Respostas e Análise 234
6.4 Aplicação de Gráficos 239
6.4.1 Pequena Árvore de Extensão 239
6.4.2 Caminho Curto 242
6.4.3 Descrição da expressão do gráfico acíclico direcionado 246
6.4.4 Classificação Topológica 246
6.4.5 Caminho Crítico 248
6.4.6 Perguntas selecionadas desta seção 251
6.4.7 Respostas e Análises 260
Resumo 275
Pensando 276
Capítulo 7 Busca 277
7.1 Conceitos básicos de pesquisa 277
7.2 Busca Sequencial e Binária 278
7.2.1 Busca Sequencial 278
7.2.2 Busca Binária 280
7.2.3 Pesquisa de Bloco 281
7.2.4 Perguntas selecionadas desta seção 282
7.2.5 Respostas e Análise 285
7.3 Pesquisa de árvore 291
7.3.1 Árvore Binária Classificada (BST) 291
7.3.2 Árvores Binárias Balanceadas 295
7.3.3 Árvores Rubro-Negras 299
7.3.4 Perguntas selecionadas desta seção 305
7.3.5 Respostas e Análise 309
7.4 Árvores B e Árvores B+ 319
7.4.1 B-tree e suas operações básicas 319
7.4.2 Conceitos básicos de árvores B+ 322
7.4.3 Perguntas selecionadas desta seção 323
7.4.4 Respostas e explicações 325
7.5 Tabela de Hash 331
7.5.1 Conceitos básicos de tabelas de hash 331
7.5.2 Método de construção de função hash 331
7.5.3 Métodos para lidar com conflitos 332
7.5.4 Busca de hash e análise de desempenho 334
7.5.5 Perguntas selecionadas desta seção 335
7.5.6 Respostas e Análises 338
Resumo 343
Expansão do Pensamento 344
Capítulo 8 Classificação 345
8.1 Conceitos básicos de classificação 346
8.1.1 Definição de Classificação 346
8.1.2 Perguntas selecionadas desta seção 346
8.1.3 Respostas e Análise 347
8.2 Inserção de classificação 347
8.2.1 Inserção Direta Classificação 347
8.2.2 Classificação por inserção binária 349
8.2.3 Classificação de shell 349
8.2.4 Perguntas selecionadas desta seção 351
8.2.5 Respostas e Análise 352
8.3 Troca de Classificação 355
8.3.1 Classificação por bolhas 355
8.3.2 Classificação rápida 356
8.3.3 Perguntas selecionadas desta seção 359
8.3.4 Respostas e Análise 361
8.4 Seleção de classificação 366
8.4.1 Seleção Simples de Classificação 366
8.4.2 Classificação de heap 366
8.4.3 Perguntas selecionadas desta seção 369
8.4.4 Respostas e explicações 371
8.5 Classificação por mesclagem, classificação por radix e classificação por contagem 417
8.5.1 Mesclar classificação 377
8.5.2 Classificação de Radix 379
*8.5.3 Contagem e Classificação 380
8.5.4 Perguntas selecionadas desta seção 382
8.5.5 Respostas e Análise 384
8.6 Comparação e aplicação de vários métodos de classificação interna 387
8.6.1 Comparação de métodos de classificação interna 387
8.6.2 Aplicação de métodos de classificação interna 388
8.6.3 Perguntas selecionadas desta seção 389
8.6.4 Respostas e Análises 391
8.7 Classificação externa 394
8.7.1 Conceitos básicos de classificação externa 408
8.7.2 Método de classificação externa 394
8.7.3 Fusão balanceada multidirecional e árvore perdedora 395
8.7.4 Classificação por Permutação-Seleção (Gerando Segmentos de Mesclagem Iniciais) 406
8.7.5 Mesclar Árvore 397
8.7.6 Perguntas selecionadas desta seção 399
8.7.7 Respostas e Análises 400
Resumo 404
Pensando 405
Referências 406
......