Disciplina: Estrutura de Dados¶
Bem-vindos à disciplina de Estrutura de Dados! Esta página é o hub central para o cronograma, materiais de aula, listas de exercícios e laboratórios.
🎯 Objetivos da Disciplina¶
Ao final desta disciplina, você será capaz de compreender, implementar e analisar as principais estruturas de dados utilizadas na computação. O objetivo é desenvolver a base necessária para a criação de algoritmos eficientes e a resolução de problemas complexos, utilizando a linguagem C como ferramenta principal.
📚 Ementa¶
- Recursividade
- Tipos Abstratos de Dados (TAD)
- Estruturas de dados básicas: listas lineares (pilhas, filas, listas encadeadas)
- Árvores e aplicações
- Árvores binárias: Árvore de Busca (BST), Árvores Balanceadas (AVL) e Heaps
- Algoritmos de ordenação
- Noções de complexidade de algoritmos
Aulas — Anotações¶
Unidade 1 — Pilhas, Listas e Filas
- Apresentação da disciplina
- Pilha Estática I: implementação básica com vetores globais
- Pilha Estática II: funções, ponteiros e structs
- Pilha Estática III: alocação dinâmica
- Listas Estáticas como TAD em C
- Listas Encadeadas como TAD em C
- Filas como TAD em C
Unidade 2 — Árvores
- Recursão e Algoritmos de Busca
- Árvores: Conceitos e Binária
- Árvores Binárias de Busca
- Árvores AVL: Conceito
- Árvores AVL: Implementação
Unidade 3 — Ordenação
- Complexidade de Algoritmos & Análise de Desempenho (gcov e gprof)
- Algoritmos de Ordenação Básicos
- Algoritmos de Ordenação Avançados
Listas de Exercícios¶
Básico de C
Unidade 1
Unidade 2
Laboratórios¶
- Laboratório: um REPL para uma máquina baseada em pilha
- Trabalho Prático: Algoritmos de Ordenação em C
📖 Apostila de Referência¶
Origem do material
Esta apostila foi desenvolvida pelo Prof. José Lucas Rangel (PUC-Rio) e pela Profa. Regina Pereira (UFF). A versão atual foi revisada pelo Prof. Waldemar Celes (PUC-Rio).
Unidade 1: Linguagem C e estruturação de dados básica
- Capítulo 1: Conceitos fundamentais
- Capítulo 2: Expressões
- Capítulo 3: Controle de fluxo
- Capítulo 4: Funções
- Capítulo 5: Vetores e alocação dinâmica
- Capítulo 6: Cadeia de caracteres
- Capítulo 7: Tipos estruturados
- Capítulo 8: Matrizes
Unidade 2: Estruturas dinâmicas
- Capítulo 9: Tipos abstratos de dados
- Capítulo 10: Listas encadeadas
- Capítulo 11: Pilhas
- Capítulo 12: Filas
- Capítulo 13: Árvores
Unidade 3: Ordenação e busca
- Capítulo 14: Arquivos
- Capítulo 15: Ordenação
- Capítulo 16: Busca
- Capítulo 17: Tabelas de dispersão
Apêndices
- Apêndice A: Como compilar um programa C