Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


TAD e Estruturas elementares, Notas de estudo de Informática

Estruturas elementares e Tipos de dados Abstratos

Tipologia: Notas de estudo

2013

Compartilhado em 13/03/2013

samuel-santos-98
samuel-santos-98 🇧🇷

5

(5)

44 documentos

1 / 35

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
24/01/2013
1
ESTRUTURAS DE DADOS E
ALGORITMOS
TIPO ABSTRATO DE DADO E
ESTRUTURAS ELEMENTARES
Adalberto Cajueiro
Departamento de Sistemas e Computação
Universidade Federal de Campina Grande
1
INTRODUCAO
Conjuntos são fundamentais para matemática e
ciência da computação
Matemática: imutável (naturais, inteiros)
Computação: dinâmico (modificam o tamanho)
Manipulação de conjuntos em computacao
envolve
Inserir, deletar, pertinência
Qualquer conjunto que suporta as operacoes acima é
chamado de dicionário
2
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Pré-visualização parcial do texto

Baixe TAD e Estruturas elementares e outras Notas de estudo em PDF para Informática, somente na Docsity!

ESTRUTURAS DE DADOS E

ALGORITMOS

TIPO ABSTRATO DE DADO E

ESTRUTURAS ELEMENTARES

Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1

INTRODUCAO

 Conjuntos são fundamentais para matemática e ciência da computação  Matemática: imutável (naturais, inteiros)  Computação: dinâmico (modificam o tamanho)  Manipulação de conjuntos em computacao envolve  Inserir, deletar, pertinência  Qualquer conjunto que suporta as operacoes acima é chamado de dicionário 2

CONJUNTOS DINÂMICOS

 Elementos são objetos contendo uma chave e possivelmente dados satélite  Alguns conjuntos dinamicos pressupoem que existe uma relação de ordem entre as chaves. Isso permite falar do próximo elemento ao invés de um elemento específico.  Operações sobre um conjunto dinâmico S:  Consultas: search(k)  Modificações: insert(x), delete(x), minimum(S), maximum(S), successor(x), predecessor(x)  Exemplos:  Vetor, pilha, fila, listas  Árvore binária, AVL, splay, B, preto-vermelho  Tabelas de dispersão (hash) chave dados satélites 3

TIPO ABSTRATO DE DADO (TAD)

 É um contrato de serviço  Estabelece como cliente e servidor devem se comportar para que tudo funcione  Formalmente é uma especificacao abstrata de um tipo  Encapsula a estrutura de dados  Agrupa a estrutura de dados e operações. A escolha da representacao é influenciada pelas operações.  Abstrai de uma implementação específica (não diz como é implementado)  É util para dizer em que consiste o serviço e como ele deve ser usado. (^) 4

TIPO ABSTRATO DE DADO (TAD)

 Consequencias do uso de TAD  Bom uso de interfaces  Desacopla codigo do cliente do servidor (melhora a modularidade)  Facilita mudanças do tipo concreto em uma aplicação (aumenta estensibilidade)  Permite reuso de tipos  O bom uso requer que se identifique  Interfaces adequadas para o problema  Boas implementacoes de cada interface  Programe para interfaces, não para implementações! 7

ESTRUTURAS DE DADOS

ELEMENTARES

8

VETOR

 É a mais básica das estruturas de dados.

 Veteores são matrizes unidimensionais e

também são chamados de arrays.

 Acesso direto ao elemento através de

indexação

 Exemplo

 A = [10, 5, - 2, 0, 7]

 Acesso: A[2];  Modificação: A[3] = 19; 9

VETOR

 Operações

 Inserir x  O(1)  Remover x  O(n)  Pesquisar x  O(n)  Pesquisar k-ésimo elemento  O(1) 10

PILHA (STACK)

 Conjunto dinamico onde a operação de

remoção segue uma política específica

 Definição

 Estrutura de dados em que a inserção e a remoção de elementos de uma seqüência se faz pela mesma extremidade, geralmente designada por topo da pilha.  Política de acesso LIFO = Last-in First-out 13

PILHA (STACK)

 Operações (interface)

 Criar uma pilha vazia (create)  Inserir/Empilhar (push)  Deletar/Desempilhar (pop)  Acessar o elemento do topo (top)  Verificar se está vazia (isEmpty)  Verificar se está cheia (isFull) 14

PILHA (STACK)

 Interface em Java

 Como seria a interface de uma pilha genérica em Java? 15

PILHA (STACK)

 Interface em Java

 Como descrever uma pilha genérica em Java? public interface Stack { public void push(T elem) throws StackOverflowException; public T pop() throws StackUnderflowException; public T top(); public boolean isEmpty(); public boolean isFull(); } public class StackOverflowException extends Exception { public StackOverflowException() { super(“Stack is full"); } } 16

STACK (FUNCIONAMENTO)

inicializacao top 19

STACK(FUNCIONAMENTO)

push(elemento) top 20

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) top 21

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) push(elemento) top 22

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() top retornado 25

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() top retornado 26

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() pop() top retornado 27

STACK (FUNCIONAMENTO)

push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() pop() pop() top StackUnderflow 28

IMPLEMENTAÇÃO

Qual a complexidade de cada serviço?

31

EXERCÍCIO

 Como fica o estado de uma pilha inicialmente vazia após a execução dos comandos:  push(10)  push(5)  pop()  push(7)  top()  pop()  isEmpty() 32

STACK (APLICACAO)

 Processamento de expressões aritméticas em calculadoras  (1+5)*7 = 1 5 + 7 * = 42  Execução de programas  Quando uma rotina chama outra rotina, a primeira deve saber como prosseguir quando a segunda for concluída.  Exemplo: fatorial  Browser (botão voltar)  Undo do editores de texto 33

PILHA (APLICACAO)

f(0) = 1 f(n) = nf(n-1) top f(5) = 5f(4) f(5) 5*f(4)^34

PILHA (APLICACAO)

f(0) = 1 f(n) = nf(n-1) top f(5) = 5f(4) f(4) = 4f(3) f(3) = 3f(2) f(5) 5* f(4) 4* f(3) 3* f(2) 37

PILHA (APLICACAO)

f(0) = 1 f(n) = nf(n-1) top f(5) = 5f(4) f(4) = 4f(3) f(3) = 3f(2) f(2) = 2f(1) f(5) 5 f(4) 4* f(3) 3* f(2) 2* f(1) 38

PILHA (APLICACAO)

f(0) = 1 f(n) = nf(n-1) f(5) = 5f(4) top f(4) = 4f(3) f(3) = 3f(2) f(2) = 2f(1) f(1) = 1f(0) f(5) 5* f(4) 4* f(3) 3* f(2) 2* f(1) (^) 1* f(0) 39

PILHA (APLICACAO)

f(0) = 1 f(n) = nf(n-1) f(5) = 5f(4) top f(4) = 4f(3) f(3) = 3f(2) f(2) = 2f(1) f(1) = 1f(0) f(0) = 1 f(5) 5* f(4) 4* f(3) 3* f(2) 2* f(1) (^) 1* 1 40