Estruturas de Dados I
Materiais gerais de Estruturas de Dados I do Prof. Igor Machado Coelho, bem como suas respectivas aplicações em períodos recentes.

Lista completa de cursos: igormcoelho/cursos
Lista completa de módulos no repositório (sequência de estudos sugerida):
- Introdução a Tipos e Análise de Complexidade
- Pilhas
- Filas
- Coleções Lineares e Iteração
- Conjuntos Simples
- Vistas, Iteradores e Percorríveis
- Sacos e Listas
- Árvores
- Conceitos de Árvores
- Árvores de Busca
- Dicionários
- Dicionários com Tabelas de Dispersão
- Dicionários Ordenados e Árvores Auto-balanceadas (AVL e Rubro-Negra)
- Filas de Prioridade
- Árvores B e B+
Cuidado com o Módulo 4: ele pode ser bastante avançado, dependendo da sua base prévia em programação estruturada: algoritmos clássicos de ordenação, listas encadeadas, vistas e iteradores.
Tópicos mais avançados como Grafos em geral são explorados como trabalho no curso.
Materiais PDF-HTML:
- Introdução (Tipos e Análise de Complexidade)
- Pilhas: PDF Online
- Exemplo de pilha na STL: main_pilha.cpp
- Vídeos YouTube: Pilhas e Implementações - Análise de Complexidade (nas próximas semanas)
- Novos conceitos:
PilhaTAD<T>: empilha(t), desempilha(), topo(), tamanho()
- Filas: PDF Online
- Exemplo de fila na STL: main_fila.cpp
- Vídeos YouTube: Filas e Implementações - Análise de Complexidade (nas próximas semanas)
- Novos conceitos:
FilaTAD<T>: enfileira(t), desenfileira(), frente(), tamanho()
- Coleções Lineares e Iteração: Conjuntos Simples, Vistas e Sacos
- Conjunto Simples: PDF Online
- Novos conceitos:
ConjuntoSimplesTAD<T>: pertence(x), insere(x), remove(x), tamanho()
- Vistas, Iteradores e Percorríveis: PDF Online
- Novos conceitos:
VistaTAD: le() (com tipo associado Tipo)
VistaMutavelTAD: le(), altera(t)
VistaVetorTAD<T>: tamanho(), le(i)
VistaMutavelVetorTAD<T>: tamanho(), le(i), altera(i, t) (satisfaz VistaVetorTAD<T>; ex: SpanInt)
IteradorTAD<T>: le(), proximo(), terminou() (satisfaz VistaTAD)
PercorrivelTAD<T>: iterador()
- Sacos e Listas: PDF Online
- Exemplo de implementação: main.cpp ListaEncadeada.hpp SacoTAD.hpp SacoVetor.hpp makefile (GNU c++17)
- Novos conceitos:
SacoTAD<T>: adiciona(t), busca(t), remove(it), tamanho()
- Tópico Avançado: Sacos Ordenados: PDF Online
- Novos conceitos:
SacoOrdenadoTAD<T>: buscaMaiorIgual(t), buscaMaior(t) (satisfaz SacoTAD<T>)
- Árvores e Árvores de Busca
- Dicionários:
- Dicionários e Tabelas de Dispersão: PDF Online
- Conceito
DicionarioTAD<K, V>: tem(c), consulta(c), adiciona(c, v), remove(c), tamanho()
- Dicionários Ordenados e Árvores Balanceadas: PDF Online
- Tipos
Vista<T> e VistaMutavel<T> (versões genéricas das vistas)
- Tipo
Entrada<K, V>: chave (Vista<K>) e valor (VistaMutavel<V>)
- Conceito
DicionarioOrdenadoTAD<K, V>: buscaMaiorIgual(c), buscaMaior(c) (satisfaz DicionarioTAD<K, V> e PercorrivelTAD<Entrada<K, V>>)
- Vídeos YouTube: Dicionários e Árvores de Busca Parte 1/2
- Material Fábio Protti: Arvores de Busca 1
- Material Fábio Protti: Arvores de Busca 2
- Filas de Prioridade e Heaps: PDF Online
- Árvores B e B+: PDF Online
Observação: alguns módulos só são oferecidos para cursos específicos.
Cursos recentes
-
Algoritmos - PPG-CComp-UERJ
-
Estruturas de Dados para Sistemas de Informação - TCC00331
- Graduação 2021.1 (jun./2021-set./2021)
- Instituto de Computação (IC) - Universidade Federal Fluminense (UFF)
-
Estrutura de Dados e Algoritmos (PGC EDA)
- Pós-Graduação 2021.1 (mar./2021-jun./2021)
- Instituto de Computação (IC) - Universidade Federal Fluminense (UFF)
-
Estruturas de Dados para Sistemas de Informação - TCC00331
- Graduação 2020.2 (fev./2021-mai./2021)
- Instituto de Computação (IC) - Universidade Federal Fluminense (UFF)
-
Estruturas de Dados para Sistemas de Informação - TCC00331
- Graduação 2020.1 (set./2020-dez./2020)
- Instituto de Computação (IC) - Universidade Federal Fluminense (UFF)
Sobre gravações
Gravações disponibilizadas no YouTube e Classroom foram feitas com OBS (obrigado pelas dicas Mateus Nazário). Algumas dicas:
Utilizei o Okular para marcação do PDF (obrigado Matheus Nohra Haddad pelas dicas).
Como esses slides foram feitos?
Estes slides foram feitos em markdown e pandoc (super fácil!) de acordo com o tutorial ilectures-pandoc.
Basicamente, é necessário instalar o pandoc e, opcionalmente, copiar alguns filtros úteis do tutorial (dois arquivos python). Então, é possível gerar, a partir do markdown, uma versão PDF LaTeX+Beamer, e outra web utilizando RevealJS. O tutorial explica tudo em detalhes.
O mais legal é que a edição do slide tem uma visualização em tempo real, com plugins disponíveis para editores populares como Atom e VSCode.
Uma demonstração foi colocada no site do ilectures: https://github.com/igormcoelho/ilectures-pandoc#demonstrations.
Deps
Pandoc + LaTeX
python3 -m pip install pandoc-source-exec
python3 -m pip install pandoc-latex-color
pandoc 2.10.1
Licença CC-BY 4.0
Você pode: (Share) copiar e redistribuir esse material em qualquer formato; (Adapt) adaptar esse material, mesmo que para uso comercial.
Você deve: (Attribution) dar crédito apropriado, bem como um link para o original e a indicação das mudanças que você fez.
Veja licença original CreativeCommons CC-BY 4.0
curso-estruturas-de-dados-i (c) by Igor M. Coelho
curso-estruturas-de-dados-i is licensed under a
Creative Commons Attribution 4.0 International License.
You should have received a copy of the license along with this
work. If not, see <http://creativecommons.org/licenses/by/4.0/>.
Copyleft 2020
评论