Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Aula 003
Estrutura de Dados
PRONATEC
Programa Nacional de Acesso ao
Ensino Técnico e Emprego
PRONATEC
Programa Nacional de Acesso
ao Ensino Técnico e Emprego
1. Uma pausa: Ponteiro no Delphi
• Para algumas estruturas dinâmicas em Pascal
precisamos usar o recurso de “Ponteiro”
• U...
2. Estrutura: Lista
• Também chamada de “Lista Ligada” ou “Lista
Encadeada”, é uma estrutura em que cada
elemento contém u...
3. Definição e Operação com Lista
• Para definir uma lista de inteiros em pascal:
Type
ApontaElemento : ^Elemento;
Element...
4. Operações com Listas• Cria uma lista vazia:
Function CriaLista () : Lista;
Begin
result := nil;
End;
• Verificar o tama...
5. Remoção Específica em Lista
• Remover 1ª ocorrência do elemento “x” na Lista
Function Remove(x:integer; var p:Lista):bo...
6. Estrutura: Pilha
• Uma pilha é uma lista especial em que os
elementos são inseridos sempre na cabeça e
retirados sempre...
7. Definição e Operação da Pilha
• Para definir uma Pilha de inteiros em pascal:
Type
ApontaElemento : ^Elemento;
Elemento...
8. Operações com Pilhas
• Cria uma nova Pilha:
Function CriaPilha() : Pilha;
Begin
result := nil;
End;
• Verificar o taman...
9. Estrutura: Fila
• Uma fila é uma lista especial em que os
elementos são inseridos sempre como último da
cauda e retirad...
10. Definição e Operação na Fila
• Para definir uma Fila de inteiros em pascal:
Type
ApontaElemento : ^Elemento;
Elemento ...
11. Operações com Filas
• Cria uma nova Fila:
Function CriaFila() : Fila;
Begin
result := nil;
End;
• Verificar o tamanho ...
12. Recursividade
• É o processo que para resolver um problema chama
ele mesmo novamente. Ou seja, uma função que
chama el...
13. Estrutura: Árvore Binária
• Uma árvore binária é uma estrutura onde cada
elemento aponta dois outros, um a sua esquerd...
14. Definição e Operação em Árvore
• Para definir uma Árvore de inteiros em pascal:
Type
ApontaElemento : ^Elemento;
Eleme...
Upcoming SlideShare
Loading in …5
×

1

Share

Download to read offline

Programação-Aula004

Download to read offline

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Programação-Aula004

  1. 1. Aula 003 Estrutura de Dados PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  2. 2. PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  3. 3. 1. Uma pausa: Ponteiro no Delphi • Para algumas estruturas dinâmicas em Pascal precisamos usar o recurso de “Ponteiro” • Um Ponteiro é na verdade o endereço de memória RAM de um dado: variável ou estrutura • Para declararmos um ponteiro em Pascal usamos o símbolo “^” na sua declaração em frente do tipo que ele representa. Ex: var p : ^integer; declara “p” como um ponteiro para “inteiro”. • Significa que “p” aponta para um dado do tipo “inteiro” diretamente na memória RAM • Para acessarmos o conteúdo de “p” usamos, no código, o símbolo “^” após o ponteiro: “p^” é o inteiro apontado por “p”. Ex: “p^ := 1;” – “p” agora aponta para o inteiro “1” na memória RAM.
  4. 4. 2. Estrutura: Lista • Também chamada de “Lista Ligada” ou “Lista Encadeada”, é uma estrutura em que cada elemento contém um dado e um ponteiro que aponta para o próximo elemento da lista. • O 1º elemento é a cabeça (head) da lista, o restante a cauda (tail). No último elemento o ponteiro para o próximo não aponta para nada. Em Pascal indicamos por “nil” que significa um “Ponteiro Vazio” que não aponta para nada.
  5. 5. 3. Definição e Operação com Lista • Para definir uma lista de inteiros em pascal: Type ApontaElemento : ^Elemento; Elemento : record num: integer; prox: ApontaElemento; end; Lista : ApontaElemento; // Tipo Lista: Aponta a cabeça (1º Elemento) • Operações com uma lista: • CriaLista(): Cria um ponteiro para uma nova lista • Cardinalidade(p): Retorna quantos elementos tem P • InsereItem(x,p): Inclui item “x” na lista “p” • RemoveItem(x,p): Exclui 1ª ocorrência de x em p • RemovePrimeiro(p): Excluir cabeça da lista “p” • Busca(x,p): Retorna ponteiro para “x” na lista “p” ou “nil” se não localizado
  6. 6. 4. Operações com Listas• Cria uma lista vazia: Function CriaLista () : Lista; Begin result := nil; End; • Verificar o tamanho da lista P Function Cardinalidade (p:Lista):integer; Var i:integer; Begin i:=0; while p<>nil do begin p := p^.prox; inc(i); end; result := i; End; • Busca um elemento na Lista “p” Function Busca(x:integer; p:Lista):ApontaElemento; Var q:ApontaElemento; Begin q := p; while (q<>nil) and (q^.num<>x) do q:=q^.prox; result := q; End; • Inserir um elemento na Lista Procedure Insere (x:integer; var p:Lista); Var q:ApontaElemento; Begin new(q); // Abre um espaço na RAM q^.num := x; q^.prox := p; p := q; End; • Remover 1º elemento de uma Lista Procedure RemovePrimeiro(var p:Lista); Var q:ApontaElemento; Begin if p=nil then exit; q := p^.prox; dispose(p); p : = q; End;
  7. 7. 5. Remoção Específica em Lista • Remover 1ª ocorrência do elemento “x” na Lista Function Remove(x:integer; var p:Lista):boolean; Var q,r:ApontaElemento; Begin result := false; if p=nil then exit; // Lista vazia – sai result := True; if p^.num=x then begin // 1º da Lista – Remove o Primeiro RemovePrimeiro(p); exit; end; q := p; repeat r := q; q := q^.prox; until (q = nil) or (q^.num = x); if q <> nil then begin // Se Encontrou x Remove r^.prox := q^.prox; dispose(q); end; End;
  8. 8. 6. Estrutura: Pilha • Uma pilha é uma lista especial em que os elementos são inseridos sempre na cabeça e retirados sempre dela. Assim a impressão que se tem é que estamos “empilhando” os dados e quando retiramos um dado estamos “desempilhando” • As pilhas são conhecidas em estrutura de dados como uma fila FILO (First In – Last Out): primeiro a entrar, último a sair.
  9. 9. 7. Definição e Operação da Pilha • Para definir uma Pilha de inteiros em pascal: Type ApontaElemento : ^Elemento; Elemento : record num: integer; prox: ApontaElemento; end; Pilha : ApontaElemento; // Tipo Pilha: Aponta sempre o Topo • Operações com uma lista: • CriaPilha(): Cria um ponteiro para uma nova pilha • Cardinalidade(p): Número de itens na pilha • Empilha(x,p): Inclui item “x” no topo da pilha “p” • Desempilha(p): Retorna elemento do topo e diminui o tamanho da pilha em uma unidade
  10. 10. 8. Operações com Pilhas • Cria uma nova Pilha: Function CriaPilha() : Pilha; Begin result := nil; End; • Verificar o tamanho da pilha P Function Cardinalidade (p:Pilha):integer; Var i:integer; Begin i:=0; while p<>nil do begin p := p^.prox; inc(i); end; result := i; End; • Empilha um elemento na pilha Procedure Empilha (x:integer; var p:Pilha); Var q:ApontaElemento; Begin new(q); // Abre um espaço na RAM q^.num := x; q^.prox := p; p := q; End; • Desempilha elemento da pilha P Function Desempilha(var p:Pilha; var x:integer):boolean; Var q:ApontaElemento; Begin result := false; if p=nil then exit; result := true; x := p^.num; q := p^.prox; dispose(p); p : = q; End;
  11. 11. 9. Estrutura: Fila • Uma fila é uma lista especial em que os elementos são inseridos sempre como último da cauda e retirado sempre o primeiro da cabeça. Assim a impressão que se tem é que estamos “enfileirando” os dados. • As filas por definição são FIFO (First In – First Out): primeiro a entrar é o primeiro a sair.
  12. 12. 10. Definição e Operação na Fila • Para definir uma Fila de inteiros em pascal: Type ApontaElemento : ^Elemento; Elemento : record num: integer; prox: ApontaElemento; end; Fila : ApontaElemento; // Tipo Fila: Aponta o último elemento incluído • Operações com uma Fila: • CriaFila(): Cria um ponteiro para uma nova fila • Cardinalidade(p): Número de itens na fila • Enfileira(x,p): Inclui item “x” na fila “p” • Retira(p): Remove o elemento mais “antigo” na lista “p”, que é o mais antigo na fila
  13. 13. 11. Operações com Filas • Cria uma nova Fila: Function CriaFila() : Fila; Begin result := nil; End; • Verificar o tamanho da fila P Function Cardinalidade (p:Fila):integer; Var i:integer; Begin i:=0; while p<>nil do begin p := p^.prox; inc(i); end; result := i; End; • Empilha um elemento na fila Procedure Enfileira (x:integer; var p:Fila); Var q:ApontaElemento; Begin new(q); // Abre um espaço na RAM q^.num := x; q^.prox := p; p := q; End; • Retirar elemento da Fila (o mais antigo) Function Retira(x:integer; var p:Fila):boolean; Var q,r:ApontaElemento; Begin result := false; if p=nil then exit; result := True; if p^.prox=nil then begin // Fila de 1 elemento x := p^.num; p := nil; exit; end; q := p; repeat r:=q; q:= q^.prox; until (q^.prox = nil); x := q^.num; r^.prox := nil; dispose(q); End;
  14. 14. 12. Recursividade • É o processo que para resolver um problema chama ele mesmo novamente. Ou seja, uma função que chama ela mesma no seu funcionamento. Exemplo: Function Fatorial (n:integer):integer; Begin if n=0 then result:=1 else result := n * Fatorial (n-1); End; • Alguns problemas computacionais só podem ser resolvidos pela recursão. Quando for possível devemos evitar a recursividade pois consome mais recursos e costuma ficar mais lento e ineficiente que as formas normais de repetição: for, while, repeat
  15. 15. 13. Estrutura: Árvore Binária • Uma árvore binária é uma estrutura onde cada elemento aponta dois outros, um a sua esquerda e outro a sua direita. Na medida em que se inclui novos elementos dá-se a impressão de que a árvore “cresce” para baixo. • Cada elemento na árvore também é chamado de “Nó”
  16. 16. 14. Definição e Operação em Árvore • Para definir uma Árvore de inteiros em pascal: Type ApontaElemento : ^Elemento; Elemento : record num: integer; esq, dir: ApontaElemento; end; Arvore: ApontaElemento; // Tipo Árvore: Aponta o elemento topo (raiz) da estrutura • Operações com uma Árvore: • CriaArvore(): cria ponteiro para uma nova árvore • InsereEsq(x,a): insere “x” à esquerda • InsereDir(x,a): insere “x” à direita • Percorre(a): Percorre todos elementos da árvore
  • PAULOPCVC

    Mar. 22, 2017

Views

Total views

454

On Slideshare

0

From embeds

0

Number of embeds

16

Actions

Downloads

10

Shares

0

Comments

0

Likes

1

×