Professional Documents
Culture Documents
Marcelo B. Tenorio
Contedo
Espalhamento
Estrutura de Dados - IED-001 2
Introduo
Listas lineares
Fundamentos Tipos
Pilha Fila
Pilha
Tipo de lista linear em que todas as operaes de insero e remoo so realizadas numa mesma extremidade, denominada topo. LIFO (Last-in / First-out)
Ilustrao
Estrutura de Dados - IED-001 5
Pilha
Aplicaes
Compiladores
Calculadoras
Pilha
3 operaes bsicas:
Consulta: acessa o elemento posicionado no topo; Empilha: insere um novo elemento no topo; Desempilha: remove um elemento do topo.
3 operaes essenciais:
Inicializa: inicializa a pilha no estado vazia; EstaVazia: verifica se a pilha est vazia; EstaCheia: verifica se a pilha est cheia;
Estrutura de Dados - IED-001 7
Implementao de Pilha
Desempilhando um elemento
Estrutura de Dados - IED-001 8
Fila
Uma fila um tipo de lista linear em que as inseres so realizadas num extremo (fim), ficando as remoes restritas ao outro (incio). FIFO (First-In / First-Out)
Ilustrao
Estrutura de Dados - IED-001 9
Fila
Enfileira Desenfileira
Aplicaes
10
Implementao de Fila
Desenfileirando um elemento
11
Recursividade
Algoritmo recursivo: Para resolver um problema divide-o em subproblemas mais simples, cujas solues requerem a aplicao dele mesmo.
12
Recursividade
Soluo trivial: dada por definio; isto , no necessita da recurso para ser obtida. Esta parte do problema resolvida pelo conjunto de comandos C. Soluo geral: parte do problema que em essncia igual ao problema original, sendo porm menor. A soluo, neste caso, pode ser obtida por uma chamada recursiva.
Estrutura de Dados - IED-001 13
Recursividade
Exemplo: Fatorial
{ dada por definio } Soluo trivial: 0! = 1; { requer aplicao da rotina para (n-1)! } Soluo geral: n! = n * (n-1)!
Estrutura de Dados - IED-001 14
Recursividade
Fatorial: Soluo recursiva
15
Recursividade
Fatorial: Soluo iterativa
16
Recursividade - Ilustrao
0 1 2 3 4 4 3 4 2 3 4 1 2 3 4
fat(4)
fat(3)
fat(2)
fat(1)
fat(0)
17
Vetores: na declarao da varivel que se define o tamanho que a mesma ir ocupar na memria e este valor no pode ser alterado em tempo de execuo. Vantagem
Desvantagem
Pode-se alterar em tempo de execuo o espao ocupado pelas variveis na memria. Aplica-se quando no se sabe o quanto ser necessrio de memria para a soluo dos problemas.
Vantagem
Desvantagens
Ponteiros
int main(void) { char x = 'Z', y = 'K'; char *px, *py; px = &x; py = &y; cout << Endereco de px: << &px << \n; cout << Endereco de py: << &py << \n; printf("Conteudo de px: %p \n", px); printf("Conteudo de py: %p \n", py); cout << Conteudo para onde px aponta: << *px << \n; cout << Conteudo para onde py aponta: << *py << \n; }
Estrutura de Dados - IED-001 20
Ponteiros
21
#define MAX 10 int main (void){ int vetor [MAX], i, *v; cout << "Digite um valor para ser gravado no\n"; cout << "indice\tEndereco de Memoria\n"; for (i=0; i<MAX; i++) { printf ("[%i]\t%p\t\t-> ", i, (v+i)); cin >> vetor[i]; } v = &vetor[0]; system ("cls"); cout << "Os valores gravados no vetor foram:\n"; for (i=0; i<MAX; i++) { printf("vetor[%i], ponteiro (%p) = %i\n", i, (v+i), *(v+i)); } Estrutura de Dados - IED-001 system ("pause"); }
23
Listas encadeadas
Endereamento de memria
Ponteiros
24
Removendo um elemento
Principal (main)
25
Listas generalizadas
l
Estrutura de Dados - IED-001
m
26
Raiz
a c
Subrvore
h l m
O mximo dos nveis de todos os seus ns. Altura desta rvore exemplo: 4
28
rvore Binria
T e
29
30
31
32
33
if (*T == NULL) return; // elemento nao encontrado if (X == (*T)->valor) { // elemento encontrado P = *T; if ((*T)->esq == NULL) *T = (*T)->dir; // nao tem filho esquerdo else if ((*T)->dir == NULL) *T = (*T)->esq; // nao tem filho direito else { // tem ambos os filhos P = retornaMaior(&(*T)->esq); (*T)->valor = P->valor; } delete P; } else if (X < (*T)->valor) remove(&(*T)->esq, X); // procura na subarvore esquerda else remove(&(*T)->dir, X); // procura na subarvore direta }
Estrutura de Dados - IED-001 34
Excluir todos os ns
void excluirArvore (no **T) { if (*T != NULL) { excluirArvore(&(*T)->esq); excluirArvore(&(*T)->dir); delete *T; *T = NULL; } }
Estrutura de Dados - IED-001 38
Principal caracterstica:
Funo hashing
39
k = Maria
Paula
Estrutura de Dados - IED-001 40
Tabela de espalhamento
(ou tabela de disperso ou tabela hashing)
Funes de espalhamento
Resto da diviso inteira (ilustrao) Meio do Quadrado Mtodo da Dobra Mtodo da Multiplicao Hashing Universal
41
Implementao - Espalhamento
Funo Hash
Inserir Recuperar
Estrutura de Dados - IED-001 42
Coliso
(espalhamento)
A coliso ocorre quando um valor deve ser armazenado numa posio j ocupada. Mtodos para tratamento:
Endereamento Aberto
Endereamento Fechado
Lista encadeada
Estrutura de Dados - IED-001 43
Implementao - Espalhamento
-
44
Referncias
PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais. Conceitos e Aplicaes. 11 Edio. So Paulo: rica, 2008. CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford. Algoritmos: teoria e prtica. Rio de Janeiro: Elsevier, 2002. ZIVIANI, Nivio. Projeto de algoritmos : com implementaes em Pascal e C. 2 edio. So Paulo: Thomson Learning, 2007. PREISS, Bruno R. Estrutura de dados e algoritmos: padres de projetos orientados a objeto com Java.
Estrutura de Dados - IED-001 45