A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção.

Apresentações semelhantes


Apresentação em tema: "Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção."— Transcrição da apresentação:

1 Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção

2 Prof Ulisses Vasconcelos AULA 02 - PILHA Conceito Inserção Remoção

3 Prof Ulisses Vasconcelos CONCEITO Pilhas: São estruturas de dados dinâmicas que possui duas regiões conhecidas como topo e base (ou fundo). Inserção (LIFO): Os itens sempre são inseridos no topo da pilha Remoção(LIFO): Os itens sempre são retirados do topo da pilha Estrutura dinâmica: Comprimento variável O único elemento que se tem acesso é o elemento que está no topo A base é o primeiro elemento que foi inserido na pilha O topo é o ultimo elemento que foi inserido na pilha

4 Prof Ulisses Vasconcelos CONCEITO Funcionamento de pilha utilizando vetores: 20 55 4 12 89 01234 24 5 Pilha cheia Pilha vazia Vetores possuem um espaço limitado para armazenamento de dados. Necessitamos definir um espaço grande o suficiente para a nossa pilha. Necessitamos de um indicador (sentinela) de qual elemento do vetor é o atual topo da pilha.

5 Prof Ulisses Vasconcelos CONCEITO Funcionamento de pilha utilizando vetores: Declaração da pilha const max = 50; var pilha : record topo : Byte; dados = ARRAY [1..max] OF Integer end;

6 Prof Ulisses Vasconcelos CONCEITO Operações Colocar (PUSH) itens na pilha Retirar (POP) itens da pilha Obtêm o elemento do topo (TOP) da pilha Verificar se a pilha está cheia Verificar se a pilha está vazia Iniciar ou limpar a pilha Erros possíveis Estouro de pilha (overflow): Tentar inserir em pilha cheia Underflow tentar acessar/excluir um item de uma pilha vazia

7 Prof Ulisses Vasconcelos CONCEITO Implementação de funcionalidades de uma pilha: Iniciação Procedure Init(var P:pilha); Begin P.topo:=-1; End;

8 Prof Ulisses Vasconcelos CONCEITOS Verifica se a pilha é vazia Function IsEmpty(var P:pilha):boolean; Begin if P.topo = -1 then IsEmpty:=true else IsEmpty:=false End;

9 Prof Ulisses Vasconcelos CONCEITOS Verifica se a pilha está cheia Function IsFull(var P:pilha):boolean; Begin if P.topo=max then IsFull:=true else IsFull:=false End;

10 Prof Ulisses Vasconcelos Inserção Inserção em pilha de array Procedure Push(var P:pilha; x:char); Begin if not IsFull(P) then begin P.topo:=P.topo + 1; P.dados[P.topo]:= x end else writeln(´Pilha Cheia!´) End;  Verificação para evitar overflow

11 Prof Ulisses Vasconcelos Exclusão Exclusão em pilha de array Function Pop(var P:pilha):char; Begin if not IsEmpty(P) then begin Pop:=P.dados[P.topo]; P.topo:=P.topo - 1; end else writeln(´Pilha Vazia!´) End;  Verificação para evitar underflow

12 Prof Ulisses Vasconcelos Pilhas de Ponteiros Criação da pilha usando ponteiros type apontador = ^celula; celula = record item:integer; prox:apontador; end; tipopilha=record fundo:apontador; topo:apontador; end;

13 Prof Ulisses Vasconcelos Célula celula = record item:integer; prox:apontador; end; Prox Item item: Variável que recebe valores inteiros prox: Apontador que aponta para um registro do tipo célula Declaração: Var c1 : celula; Utilização c1.item := 3; c1.prox :=

14 Prof Ulisses Vasconcelos Pilha tipopilha=record fundo:apontador; topo:apontador; end; Topo Fundo Célula fundo: Apontador que aponta para um registro do tipo célula topo: Apontador que aponta para um registro do tipo célula Ref. 0Ref. 1 Ref. 0 Ref. 1

15 Prof Ulisses Vasconcelos Pilhas de ponteiros Inicia pilha procedure iniciapilha(var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.fundo:=aux; pilha.topo:=pilha.fundo; pilha.topo^.prox :=nil; end;

16 Prof Ulisses Vasconcelos procedure iniciapilha(var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.fundo:=aux; pilha.topo:=pilha.fundo; pilha.topo^.prox :=nil; end; Prox Item aux Topo Fundo Ref. 0 { NIL

17 Prof Ulisses Vasconcelos Pilhas de ponteiros Verifica se está vazia function vazia(pilha:tipopilha):boolean; begin vazia:=pilha.fundo = pilha.topo; end;

18 Prof Ulisses Vasconcelos Pilhas de ponteiros Inserção procedure inserir(x:integer;var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.topo^.prox:=aux; aux^.prox := nil; aux^.item :=x; pilha.topo := aux; end;

19 Prof Ulisses Vasconcelos procedure inserir(x:integer;var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.topo^.prox:=aux; aux^.prox := nil; aux^.item :=x; pilha.topo := aux; end; Prox Item aux Ref. 1 Prox Item Topo Fundo Ref. 0 NIL Ref. 1 NIL 3 3 3 Ref. 1

20 Prof Ulisses Vasconcelos Pilhas de ponteiros Exclusão procedure retirai(var x:integer; var pilha:tipopilha); var aux:apontador; begin aux:= pilha.fundo^.prox; x:=aux^.item; pilha.fundo^.prox := aux^.prox; if(pilha.fundo^.prox = nil ) then pilha.topo := pilha.fundo; dispose(aux); end;

21 Prof Ulisses Vasconcelos procedure retirai(var pilha:tipopilha); var aux:apontador; begin aux:= pilha.fundo^.prox; pilha.fundo^.prox := aux^.prox; if(pilha.fundo^.prox = nil ) then pilha.topo := pilha.fundo; dispose(aux); end; Prox Item Ref. 1 Prox Item Topo Fundo Ref. 0 Ref. 1 NIL 3 Ref. 1 Valor de aux: Ref. 1 NIL Ref. 0

22 Prof Ulisses Vasconcelos Pilhas de ponteiros Exclusão procedure retirar(var x:integer; var pilha:tipopilha); var aux:apontador; begin if ( pilha.fundo^.prox^.prox = nil ) then retirai(x,pilha) else begin aux:=pilha.fundo^.prox; while (aux^.prox <>pilha.topo) do aux :=aux^.prox; pilha.topo :=aux; aux:=aux^.prox; x:=aux^.item; pilha.topo^.prox:=nil; dispose(aux); end; end;

23 Prof Ulisses Vasconcelos procedure retirar(var pilha:tipopilha); var aux:apontador; begin if ( pilha.fundo^.prox^.prox = nil ) then retirai(pilha) else begin aux:=pilha.fundo^.prox; while (aux^.prox <>pilha.topo) do aux :=aux^.prox; pilha.topo :=aux; aux:=aux^.prox; pilha.topo^.prox:=nil; dispose(aux); end; end; Ref. 1 Prox Item Topo Fundo Ref. 0 Ref. 1 Ref. 2 3 NIL 5 Valro de aux: Ref. 1 Valro de aux: Ref. 2 NIL


Carregar ppt "Prof Ulisses Vasconcelos ESTRUTURA DE DADOS AULA 02 - PILHA Conceito Inserção Remoção."

Apresentações semelhantes


Anúncios Google