42
Estruturas de Dados Murilo Salgado Razoli

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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
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

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

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

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

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

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
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

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

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

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

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
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

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

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

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

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

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

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

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

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
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

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

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

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

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

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
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

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

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