



























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Estruturas elementares e Tipos de dados Abstratos
Tipologia: Notas de estudo
1 / 35
Esta página não é visível na pré-visualização
Não perca as partes importantes!




























Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1
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
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
É 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
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
8
Acesso: A[2]; Modificação: A[3] = 19; 9
Inserir x O(1) Remover x O(n) Pesquisar x O(n) Pesquisar k-ésimo elemento O(1) 10
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
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
Como seria a interface de uma pilha genérica em Java? 15
Como descrever uma pilha genérica em Java? public interface Stack
inicializacao top 19
push(elemento) top 20
push(elemento) push(elemento) top 21
push(elemento) push(elemento) push(elemento) top 22
push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() top retornado 25
push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() top retornado 26
push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() pop() top retornado 27
push(elemento) push(elemento) push(elemento) push(elemento) pop() pop() pop() pop() pop() top StackUnderflow 28
Qual a complexidade de cada serviço?
31
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
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
f(0) = 1 f(n) = nf(n-1) top f(5) = 5f(4) f(5) 5*f(4)^34
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
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
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
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