Conteúdo retirado do canal Linguagem C Programação Descomplicada
➜ Progresso
➜ Básico sobre Estrutura de Dados
➜ Alocação de memória
➜ Listas
➜ Filas
➜ Pilhas
➜ Programa de cadastro
Conteúdos
- Tipos de dados
- Modularização
- Passagem de valores (por valor e por referência)
- Alocação dinânima de memória
- Lista Sequencial
- Lista Simplesmente Encadeada
- Lista Duplamente Encadeada
- Lista Encadeada Circular
- Fila Estática
- Fila Dinâmica
- Pilha Estática
- Pilha Dinâmica
- Conceitos básicos
- Implementação de árvores binárias
- Percurso
- Matriz esparsa
- Bubble
- Inserção
- Seleção
- Shell
- Quick
- Busca linear
- Pesquisa binária
- Árvore binária de busca
Projetos
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
-
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.
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 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".
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:
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:
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:
Esse projeto realiza as seguintes funções:
✅ Cadastrar uma pessoa
✅ Listar pessoas cadastradas
✅ Deletar uma pessoa
Para acessar o código clique aqui.