Skip to content

Frankl1sales/Estrutura-de-Dados

Repository files navigation

Descrição da imagem

C Language CMake GCC Educational Project Educational Resources Contributors


📁 Estrutura do Repositório

A estrutura deste repositório foi inspirada nos capítulos da apostila Estruturas de Dados, desenvolvida por Celes e Rangel (2002). Embora nem todos os tópicos da apostila estejam presentes, a organização dos diretórios e arquivos segue a lógica dos conceitos abordados na obra, facilitando o estudo e a compreensão dos principais temas de estruturas de dados.

📦 Estrutura de Dados em C
├── 📂 1. Conceitos Fundamentais
├── 📂 2. Expressões
├── 📂 3. Controle de Fluxo
├── 📂 4. Funções
├── 📂 5. Vetores e Alocação Dinâmica
├── 📂 7. Tipos de Estruturas 
├── 📂 8. Matrizes
├── 📂 9. Tipos Abstratos de Dados
├── 📂 10. Lista Encadeada
├── 📂 11. Pilhas
├── 📂 12. Filas
├── 📂 13. Árvores
├── 📂 14. Arquivos
├── 📂 15. Ordenação
├── 📂 16. Busca
├── 📂 17. Tabela de Dispersão

Para iniciar é recomendado estudar ou revisitar quando for necessário as pastas GCC e Cmake para um entendimento inicial sobre compilação de arquivos C. Logo depois é válido seguir a ordem proposta na apostila. Há também na pasta de Ordenação uma implementação bonus que em ordenação que serve visualização a ação de alguns desse algoritmos em um conjunto de dados desorganizado inicialmente.

visualiza.mp4

🎥 Clique para assistir à demonstração


O que são Estruturas de Dados?

As estruturas de dados são formas de organizar e armazenar dados de maneira eficiente, permitindo que sejam manipulados e acessados de maneira rápida e eficaz (CORMEN et al., 2022). Elas são fundamentais para a programação, pois afetam diretamente a performance e a eficiência de algoritmos. Estruturas como listas, filas, pilhas, árvores e grafos são os blocos de construção para muitas soluções computacionais.

Meme sobre estrutura de dados

Fonte: makeameme.org

Por que o C é a linguagem mais usada nessas aulas?

A linguagem C foi desenvolvida por Dennis Ritchie em 1972 com o objetivo inicial de ser utilizada no sistema operacional UNIX, especialmente no computador DEC PDP-11. Tanto o UNIX quanto o compilador C e a maior parte dos aplicativos criados para esse ambiente foram escritos utilizando essa linguagem (KERNIGHAN; RITCHIE, 1988). Atualmente, a linguagem de programação C é amplamente adotada nos primeiros anos da graduação em cursos de Ciência da Computação, Engenharia da Computação e áreas correlatas. Essa escolha não é aleatória: trata-se de uma linguagem que oferece uma base sólida para o aprendizado de conceitos fundamentais da computação, tanto do ponto de vista teórico quanto prático.

A linguagem C, assim como Fortran e Pascal, é considerada uma linguagem “convencional”, pois foi desenvolvida com base nos princípios da arquitetura de von Neumann — estrutura que fundamenta a maioria dos computadores atuais. Ao utilizar uma linguagem convencional, o programador precisa indicar, de alguma forma, quais regiões da memória armazenam os dados com os quais irá trabalhar, muitas vezes lidando diretamente com os endereços de memória. Isso torna o processo de programação mais detalhado e técnico, diferentemente de linguagens como Scheme, onde esses aspectos podem ser abstraídos. Por outro lado, esse nível de detalhe proporciona maior controle sobre o funcionamento da máquina, permitindo a criação de programas mais eficientes em termos de tamanho e desempenho (CELES; RANGEL, 2002).

Um dos principais motivos para a adoção do C é a sua proximidade com o hardware. Como linguagem de baixo nível (quando comparada a linguagens modernas de alto nível, como Python ou Java), C permite que o estudante entenda como os dados são manipulados na memória, possibilitando o uso direto de ponteiros, controle de alocação dinâmica e acesso a endereços de memória. Segundo Arzani e Barbosa (2019), esse tipo de contato direto com a máquina proporciona uma compreensão mais profunda da arquitetura dos computadores e do funcionamento interno dos programas.

Contribuições

Contribuições são bem-vindas! Para contribuir, faça um fork do repositório e envie um pull request com suas melhorias ou correções.

Licença

Este projeto é licenciado sob a MIT License.

Referências

ARZANI, Lucas Finistao; BARBOSA, Luciana L. da S. Um estudo sobre a linguagem de programação C: da academia para o mercado de trabalho. In: CONGRESSO DE INOVAÇÃO, CIÊNCIA E TECNOLOGIA DO IFSP, 10.; CONGRESSO DE PÓS-GRADUAÇÃO DO IFSP, 4., 2019, Sorocaba. Anais [...]. Sorocaba: IFSP, 2019.

CELES, Waldemar; RANGEL, José Lucas. Apostila de Estruturas de Dados. Rio de Janeiro: PUC-Rio, Curso de Engenharia, 2002. Disponível em: https://www-usr.inf.ufsm.br/~juvizzotto/elc1067-2013b/estrut-dados-pucrio.pdf. Acesso em: 17 abr. 2025.

CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford. Introduction to Algorithms. Cambridge: MIT Press, 2022.

KERNIGHAN, Brian W.; RITCHIE, Dennis M. The C programming language. Englewood Cliffs: Prentice-Hall, 1988.