joaovictornsv / data-structures

Repositório criado para auxiliar nos meus estudos na linguagem C, bem como durante a disciplina de Estrutura de Dados do curso de Engenharia de Computação

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Estrutura de Dados em c

Repositório criado para auxiliar nos meus estudos em C e na disciplina de Estrutura de Dados.

Conteúdo retirado do canal Linguagem C Programação Descomplicada


Conteúdos

➜ Progresso
➜ Básico sobre Estrutura de Dados
➜ Alocação de memória
➜ Listas
➜ Filas
➜ Pilhas

➜ Programa de cadastro


🟣 Progresso:

Conteúdos

Básico

  • Tipos de dados
  • Modularização
  • Passagem de valores (por valor e por referência)
  • Alocação dinânima de memória

Tipos Abstratos de Dados (TAD):

  • Lista Sequencial
  • Lista Simplesmente Encadeada
  • Lista Duplamente Encadeada
  • Lista Encadeada Circular
  • Fila Estática
  • Fila Dinâmica
  • Pilha Estática
  • Pilha Dinâmica

Árvores:

  • Conceitos básicos
  • Implementação de árvores binárias
  • Percurso
  • Matriz esparsa

Classificação e pesquisa de dados:

  • Bubble
  • Inserção
  • Seleção
  • Shell
  • Quick
  • Busca linear
  • Pesquisa binária
  • Árvore binária de busca
Projetos

🟣 Básico sobre Estrutura de Dados

✏ Conceitos

Tipo de dado: define o conjunto de valores (domínio) que uma variável pode assumir.

Ex: int
... -2, -1, 0, 1, 2, ...

Estrutura de Dados: trata-se de um relacionamento lógico entre tipos de dados.

Tipos Abstratos de Dados: incluem as operações para manipulação dos dados. Ex:

  • criação da estrutura
  • inclusão de um elemento
  • remoção de um elemento
  • acesso a um elemento
  • etc

✅ Vantagens:

  • Encapsulamento e Segurança: usuário não tem acesso direto aos dados.

  • Flexibilidade e Reutilização: podemos alterar o "TAD" sem alterar as aplicações que o utilizam.

📦 Modularização e TAD:

A convenção em linguagem C é preparar dois arquivos para implementar um "TAD":

  • Arquivo ".H": protótipos das funções, tipos de ponteiros, e dados globalmente acessíveis.

  • Arquivo ".C": declaração do tipo de dado e implementação das suas funções.

Assim separamos o "conceito" (definição do tipo) de sua "implementação".


🟣 Alocação de memória

Alocação estática:

  • O espaço de memória é alocado no momento da compilação.
  • Exige a definição do número máximo de elementos da "Lista".
  • Acesso sequencial: elementos consecutivos na memória.

Alocação dinâmica:

  • O espaço de memória é alocado em tempo de execução.
  • A "Lista" cresce à medida que novos elementos são armazenados, e diminui à medida que elementos são removidos.
  • Acesso encadeado: cada elemento pode estar em uma área distinta da memória. Para acessar um elemento, é preciso percorrer todos os seus antecessores na "Lista".

🟣 Listas

Em uma "Lista" podemos realizar as seguintes operações básicas:

  • criação da lista
  • inserção de um elemento
  • exclusão de um elemento
  • acesso a um elemento
  • destruição da lista
  • etc

Essas operações dependem do tipo de alocação de memória usada:

  • estática
  • dinâmica

👉 Listas Implementadas:


🟣 Filas

Uma "Fila" é um tipo especial de "Lista":

  • Inserções e exclusões de elementos ocorrem nas extremidades da "lista"

Em uma "Fila" podemos realizar as seguintes operações básicas:

  • criação da fila
  • inserção de um elemento no "final"
  • exclusão de um elemento do "início"
  • acesso ao elemento do "início"
  • destruição da fila

Essas operações dependem do tipo de alocação de memória usada:

  • estática
  • dinâmica

👉 Filas Implementadas:


🟣 Pilhas

Uma "Pilha" é um tipo especial de "Lista":

  • Inserções e exclusões de elementos ocorrem apenas elementos no início da "lista"

Em uma "Pilha" podemos realizar as seguintes operações básicas:

  • criação da pilha
  • inserção de um elemento no "início"
  • exclusão de um elemento do "início"
  • acesso ao elemento do "início"
  • destruição da pilha

Essas operações dependem do tipo de alocação de memória usada:

  • estática
  • dinâmica

👉 Pilhas Implementadas:


🟣 Programa de cadastro

Esse projeto realiza as seguintes funções:

✅ Cadastrar uma pessoa
✅ Listar pessoas cadastradas
✅ Deletar uma pessoa

Para acessar o código clique aqui.

Prévia:


Profile Made with 💙 by João Victor

About

Repositório criado para auxiliar nos meus estudos na linguagem C, bem como durante a disciplina de Estrutura de Dados do curso de Engenharia de Computação


Languages

Language:C 100.0%