estruturas de dados murilo salgado razoli. estruturas de dados estruturas de dados são formas de...
TRANSCRIPT
![Page 1: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/1.jpg)
Estruturas de Dados
Murilo Salgado Razoli
![Page 2: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/2.jpg)
Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um computador, podem ser usadas em diversos tipos de aplicações.
![Page 3: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/3.jpg)
Estruturas de Dados Clássicas Vetores( Arrays); Lista; Pilha; Filas; Grafos; Árvores:
Árvores Binárias.
“Estrutura de dados é o ramo da computação que estuda os diversos mecanismos de organização de dados para atender aos diferentes requisitos de processamento;
TAD
![Page 4: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/4.jpg)
Uma Estrutura de Dados pode ser dividida em dois pilares fundamentais:Dados e Estrutura
Dados
Elemento que possui valor agregado e que pode ser utilizado para solucionar problemas computacionais.
Estrutura
Elemento Estrutural que é responsável por carregar informações dentro de uma estrutura de software
![Page 5: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/5.jpg)
TAD – Tipo Abstrato de Dados
“Um tipo abstrato de dados define uma classe de objetos abstratos que é completamente caracterizada pelas operações disponíveis nestes objetos. Isto significa que um tipo abstrato de dados pode ser definido pela definição e caracterização das operações daquele tipo” (Liskov, 1974).
![Page 6: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/6.jpg)
Tipos Abstratos de Dados (TAD)
Vantagens: Usam a TAD por meio da interface de acesso;
Sem conhecer os detalhes de representação. Não acessam o módulo de implementação;
Idealmente, a implementação é “invisível”; Programador usa TAD e cria uma lista de clientes e aplica operações
sobre ela, sem saber como ela é representada internamente.
![Page 7: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/7.jpg)
Tipos Abstratos de Dados ou “TAD”: incluímos operações para a manipulação desses dados.
Funções que interagem com os 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; Flexibilidade e Reutilização;
![Page 8: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/8.jpg)
Exemplo: “TAD”Separa a Implementação da Aplicação.
Linguagem C - Descomplica
![Page 9: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/9.jpg)
ListaEm geral as operações que podem ser realizadas em uma lista são:
- Inicializar- Inserir - Buscar- Acessar- Eliminar- Cadastro de funcionários- Tamanho da Lista- Destruir...
![Page 10: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/10.jpg)
Exemplos: Lista Telefônica; Lista de clientes de uma agência bancária; Lista de setores de disco a serem acessados por um sistema operacional;
![Page 11: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/11.jpg)
Lista Estática e Lista Dinâmica
Lista Estática:• O espaço da memória é Alocado no momento da Compilação;• Exige um número máximo de Elementos;• Acesso Sequencial;
Lista Dinâmica:• O espaço da 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.
![Page 12: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/12.jpg)
Características Importantes: Consequência: As quatro primeiras operações são feitas em tempo constante. As
demais, porém, requererão mais cuidados.
Desvantagem: Movimentação quando eliminado/inserido elemento; Tamanho máximo pré –estimado;
Vantagem: Acesso direto indexado a qualquer elemento da lista Tempo constante para acessar o elemento i - dependerá somente do índice. Movimentação quando eliminado/inserido elemento; Tamanho máximo pré –estimado;
Quando usar: Listas pequenas Inserção/remoção no fim da lista Tamanho máximo bem definido
![Page 13: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/13.jpg)
![Page 14: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/14.jpg)
Lista Encadeada Dinâmica Representada por ponteiros.
~Quando utilizar essa “Lista”?Alocamos na memória ‘nó’ por ‘nó’
![Page 15: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/15.jpg)
Características
Desvantagens: Necessidade de percorrer a lista para acessar um elemento. Acesso Indireto aos elementos.
Vantagens: Melhor utilização dos recursos de memória. Não precisa movimentar os elementos nas operações de inserção e
remoção.
![Page 16: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/16.jpg)
Lista Duplamente Encadeada Um tipo de Lista onde cada elemento aponta para o seu sucessor e
antecessor da na “Lista”
![Page 17: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/17.jpg)
Implementação: Algoritmo Cadastro de Funcionários.
![Page 18: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/18.jpg)
Pilha (Stack)
A estrutura denominada pilha implementa o conceito de FILO (First-In, Last-Out) ;
Nessa estrutura, cada elemento armazena um ou vários dados e um ponteiro para o próximo elemento;
Aplicações: Inserção, consulta, remoção e esvaziar.
TOPO;
![Page 19: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/19.jpg)
![Page 20: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/20.jpg)
Uma Pilha é um tipo especial de “Lista” - Inserções e exclusões de elementos ocorrem apenas no inicio da “lista”
![Page 21: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/21.jpg)
Aplicações
Verificação de parênteses.
Retirada de vagões de um trem.
Retirada de mercadorias em um caminhão de entregas.
![Page 22: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/22.jpg)
Alocação dinâmica O espaço de memória é alocado em tempo de execução.
Alocação estática O espaço de memória é alocada no momento da compilação.
Aplicações: Análise de uma expressão matemática Avaliação de expressão pós-fixa
![Page 23: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/23.jpg)
Calculadora pós fixada Um bom exemplo de aplicação de pilha é o
funcionamento das calculadoras da HP (Hewlett-Packard).
(1 – 2) * (4 + 5) assim: 1 2 – 4 5 + * .
![Page 24: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/24.jpg)
![Page 25: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/25.jpg)
Algoritmo Stack (Array Implemetation)
Algoritmo - Pilha Estática em um Vetor: https://www.cs.usfca.edu/~galles/visualization/StackArray.html
![Page 26: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/26.jpg)
Pilha Dinâmica Cada elemento aponta para o seu sucessor na “pilha”.
Usa um ponteiro especial (ponteiro para ponteiro) para o primeiro elemento da “pilha ” e uma indicação de final de “pilha”
![Page 27: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/27.jpg)
Assim as operações do TAD são as seguinte:
Inicializa Pilha;
Pilha Vazia;
Empilha;
Desempilha.
![Page 28: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/28.jpg)
Algoritmo Stack (Linked List Implementaion)
Algoritmo - Pilha Dinâmica em um Vetor: https://www.cs.usfca.edu/~galles/visualization/StackLL.html
![Page 29: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/29.jpg)
Grafos É um modelo matemático que representa relações entre objetos
Permite Representar: Cidades e Estradas Computadores e Conexões de Rede Pessoas e Relacionamentos
Representa pontos e ligações entre eles: Vértices e Arestas.
![Page 30: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/30.jpg)
Problemas Reais
![Page 31: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/31.jpg)
Grafos: É definido como um conjunto de vértices e um conjunto de
arestas que conectam qualquer par de vértices. G = (V,A)
V é o conjunto de vértices (não vazio). A é o conjunto de arestas. Se G(V,A), V = {1,2,3,4} A = ({1,2},{1,4},{2,3},{3,4}) Uma aresta sempre conecta dois vértices (v1,v2).
1
4
2
3
![Page 32: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/32.jpg)
Grau de um vértice e Laço
• Grau de Entrada:• Arestas que chegam no vértice.
• Grau de Saída: • Arestas que partem do vértice.
![Page 33: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/33.jpg)
![Page 34: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/34.jpg)
Tipos de Grafos Representação de Grafos:
Como representar um grafo no computador? Linguagens C, Java...
Duas Abordagens são muito utilizadas: “Matriz de Adjacência” “Lista de Adjacência”
![Page 35: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/35.jpg)
Matriz de Adjacência Algumas características:
Uma matriz NxN utilizada para armazenar o grafo, onde N é o número de vértices.
Alto custo computacional , (N^2). Uma aresta é representada por uma ”marca” na posição (i,j) da matriz.
![Page 36: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/36.jpg)
Ideia de Representação:
![Page 37: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/37.jpg)
Ideia de Representação:
![Page 38: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/38.jpg)
Lista de Adjacência
![Page 39: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/39.jpg)
![Page 40: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/40.jpg)
Curiosidade Algoritmo de Dijkstra
![Page 41: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/41.jpg)
Bibliografia http://pt.slideshare.net/mcastrosouza/grafos-representao
http://danielamaral.wikidot.com/introducao-a-teoria-dos-grafos
https://www.cs.usfca.edu/~galles/visualization/BST.html
http://cameraweb.ccuec.unicamp.br/watch_video.php?v=cwAwxa1z89
https://www.youtube.com/user/italogross
https://www.youtube.com/user/progdescomplicada
http://pt.slideshare.net/silvanooliveira/apostila-complementar-de-estrutura-de-dados-lista-pilha-fila-e-arvores-com-exerccios
![Page 42: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um](https://reader036.vdocuments.net/reader036/viewer/2022062316/5706385a1a28abb8238fd7d5/html5/thumbnails/42.jpg)
http://usuarios.upf.br/~mcpinto/ed-tsi/ed_parte01.pdf
http://www.inf.ufes.br/~pdcosta/ensino/2012-1-estruturas-de-dados/slides/Aula9(listas).pdf