Estrutura de Dados - Aula 04

558 visualizações

Publicada em

Estrutura de Dados - Anhanguera
AULA 04 - MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
558
No SlideShare
0
A partir de incorporações
0
Número de incorporações
44
Ações
Compartilhamentos
0
Downloads
32
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Estrutura de Dados - Aula 04

  1. 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 04 – MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Prof. Thomás da Costa thomascosta@aedu.com
  2. 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
  3. 3. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões, possui um comportamento semelhante ao de uma tabela com linhas e colunas. O que é:
  4. 4. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes Exemplo: int valor[4][4] = { {0, 0 ,0 ,0}, {0, 1 ,1 ,0}, {0, 1 ,1 ,0}, {0, 0 ,0 ,0} };Declaração de uma matriz
  5. 5. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> using namespace std; int main() { int valor[4][4] = { {0, 0 ,0 ,0}, {0, 1 ,1 ,0}, {0, 1 ,1 ,0}, {0, 0 ,0 ,0} }; for (int i=0;i<=3;i++) { for (int j=0;j<=3;j++) { cout << valor[i][j]; } cout << endl; } } Exemplo 1
  6. 6. ESTRUTURA DE DADOS – Prof. Thomás da Costa Matrizes Podemos atribuir valores para uma posição de uma matriz utilizando diretamente os seus índices. Atribuição de Valor: MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA valor[0][2] = 22;
  7. 7. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes • Sempre usar com sabedoria !!! • Quanto maior o tamanho da matriz, maior a quantidade de memória ocupada. • A memória da matriz é de alocação estática. • Podemos declarar qualquer tipo de matriz. • Matrizes podem possuir várias dimensões, mas cuidado ao utilizar. • Não se esqueça: computador tem memória limitada !!!  • Para acessar as informações de uma matriz vamos precisar sempre de dois índices. Detalhes:
  8. 8. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória O que vamos aprender: • Vamos conhecer dois tipos de alocação de memória: • Estática • Dinâmica
  9. 9. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Variáveis são alocadas na memória do computador. • As variáveis declaradas pelos nossos programas, são alocadas de acordo com seus tamanhos e tipos. • Obviamente, cada variável tem um tamanho definido. Conforme a tabela abaixo: Detalhes: Tipo Tamanho em Bytes Faixa Mínima char 1 -127 a 127 int 4 -2.147.483.648 a 2.147.483.647 float 4 6 dígitos de precisão double 8 15 dígitos de precisão
  10. 10. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Alocação estática é controlada pelo compilador. • Não é possível alterar o espaço da alocação de memória. • Na alocação estática, a área de memória ocupada por ela se mantém constante durante toda a execução. Estática:
  11. 11. ESTRUTURA DE DADOS – Prof. Thomás da Costa Alocando memória: Para o nosso exemplo, vamos efetuar a alocação estática, simplesmente declarando uma variável. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Estática int valor;
  12. 12. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Alocação dinâmica é controlada pelo desenvolvedor. • A memória pode ser desalocada durante o decorrer do programa. • O tamanho da alocação é sob demanda, ou seja, em tempo de execução. • Vamos utilizar alocação dinâmica de memória principalmente com struct. • Não se esqueça: um computador tem memória limitada.  • Não se esqueça de desalocar a memória da variável quando não for mais necessário o uso. Dinâmica:
  13. 13. ESTRUTURA DE DADOS – Prof. Thomás da Costa Alocando memória: Para o nosso exemplo, vamos efetuar a alocação dinâmica de memória utilizando a palavra reservada new. Efetuando a alocação de memória alunos *novo_aluno = new alunos; MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Dinâmica
  14. 14. ESTRUTURA DE DADOS – Prof. Thomás da Costa Desalocando memória: Para o nosso exemplo, vamos efetuar a desalocação dinâmica de memória utilizando a palavra reservada delete. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Dinâmica Efetuando a desalocação de memória delete lista_alunos;
  15. 15. ESTRUTURA DE DADOS – Prof. Thomás da Costa Lista Ligada Simples: É uma lista de elementos ligados em sequência. Normalmente utilizamos estruturas para representar lista ligadas. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  16. 16. ESTRUTURA DE DADOS – Prof. Thomás da Costa Mais detalhes: • São representados por estruturas. • São estruturas dentro de estruturas encadeadas. • A estrutura interna sempre é um ponteiro para outra estrutura. • Sendo um ponteiro, indica o endereço da próxima estrutura. • Vamos trabalhar com inserção no fim da lista encadeada. • Utilizadas para armazenar valores na memória de fácil acesso. Listas MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
  17. 17. ESTRUTURA DE DADOS – Prof. Thomás da Costa Como funciona: Um elemento de uma lista, possui o endereço do próximo. O último elemento da lista tem o valor NULL. 1 2 3 Elementos da lista ligada simples Endereço de memória para o próximo elemento MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  18. 18. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo: Próximo elemento da listastruct alunos { char nome[100]; int idade; alunos *proximo; } *lista_alunos; MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  19. 19. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> #include <strings.h> #include <conio.h> #include <limits> using namespace std; struct alunos { char nome[100]; int idade; alunos *proximo; } *lista_alunos; void iniciar_lista(); void inserir_aluno(); void listar_alunos(); void menu(); void limpar_teclado(); ... Exemplo 2
  20. 20. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... int main() { int opcao = -1; iniciar_lista(); while (opcao != 0) { menu(); cin >> opcao; if (opcao == 1) inserir_aluno(); else if (opcao == 2) listar_alunos(); } delete lista_alunos; } ... Exemplo 2
  21. 21. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 2 Adicionando no final da lista ... alunos *novo_aluno = new alunos; cout << "Digite o nome do aluno:" << endl; gets(novo_aluno->nome); cout << "Digite a idade do aluno:" << endl; cin >> novo_aluno->idade; novo_aluno->proximo = NULL; if (lista_alunos == NULL) lista_alunos = novo_aluno; else { alunos *p; p = lista_alunos; while (p->proximo != NULL) p = p->proximo; p->proximo = novo_aluno; } ...
  22. 22. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... alunos *p; p = lista_alunos; if (p->proximo == NULL) { cout << "------------------------------------" << endl; cout << "Nome do Aluno:" << p->nome << endl; cout << "Idade do Aluno:" << p->idade << endl; cout << "------------------------------------" << endl; } else { while (p != NULL) { cout << "------------------------------------" << endl; cout << "Nome do Aluno:" << p->nome << endl; cout << "Idade do Aluno:" << p->idade << endl; cout << "------------------------------------" << endl; p = p->proximo; } } ... Exemplo 2 Percorrendo a lista ligada
  23. 23. ESTRUTURA DE DADOS – Prof. Thomás da Costa • Matrizes são vetores com duas ou mais dimensões. • Existem dois tipos de alocação de memória. • Alocação Estática. • Alocação Dinâmica. • Variáveis possuem um tipo e um tamanho definido. • Listas são representadas por estruturas. • Listas são estruturas dentro de estruturas encadeadas. • A estrutura interna sempre é um ponteiro para outra estrutura. • Sendo um ponteiro, indica o endereço da próxima estrutura. • Listas são utilizadas para armazenar valores na memória de fácil acesso. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Resumo
  24. 24. Obrigado !!! ANHANGUERA – 2015.2

×