Buscar

Pilhas

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
Pilhas
Profª: Karina Dutra de Carvalho Lemos
*
Definição
Uma pilha é uma lista linear em que todas as inserções, retiradas e geralmente todos os acessos são feitos em apenas um extremo da lista. 
Os itens de uma pilha estão colocados um sobre o outro, com o item inserido mais recentemente no topo e o item inserido menos recentemente no fundo. 
*
Definição
O modelo intuitivo de pilha é o de um monte de pratos em uma prateleira, sendo conveniente retirar os pratos ou adicionar novos pratos na parte superior.
*
Propriedades
· o último item inserido é o primeiro item que pode ser retirado da lista. 
Por esta razão as pilhas são chamadas de lifo, termo formado a partir de “last-in, first-out). 
*
Utilização
As pilhas são utilizadas em sistemas operacionais para regular a ordem na qual tarefa deve receber processamento e recursos devem ser alocados a processos. 
*
Alguns procedimentos
1.FPVazia(pilha). Faz a pilha ficar vazia.
2.Vazia(pilha). Função que retorna true se pilha estiver vazia; senão retorna false.
3.Empilha(x,pilha). Insere o item x no topo da pilha.
4.Desempilha(pilha,x). Retorna o item x no topo da pilha, retirando-o da pilha.
5.Tamanho(Pilha). Esta função retorna o número de itens da pilha.
*
Implementação de Pilhas por arranjo
Em uma implementação através de arranjos os itens da pilha são armazenados em posições contíguas de memória.
Como em uma pilha as inserções e retiradas ocorrem no topo da pilha, um cursor chamado topo é utilizado para controlar a posição do item no topo da pilha.
*
Os itens são armazenados em um array de tamanho suficiente para armazenar a pilha. O outro campo do mesmo registro contém um apontador para o item no topo da pilha. A constante MAXTAM define o tamanho máximo permitido para pilha.
*
Implementação
Const Maxtam=10;
Type
 Apontador = integer;
 Tipoitem = Record 
 chave:tipochave; 
 end;
 TipoPilha = Record 
 item: array [1..Maxtam] of tipoitem;
 topo: apontador;
 end;
*
Operações sobre Pilha usando Arranjo
1- Procedimento para fazer a pilha ficar vazia:
 
Procedure FPVazia(var Pilha:TipoPilha);
Begin
 Pilha.topo:=0; 
End;
*
Operações sobre pilhas
usando Arranjo
2- Função para verificar se a pilha esta vazia:
 
Function vazia(var pilha:tipopilha):boolean;
Begin
 Vazia:= (pilha.topo = 0);
End;
*
Operações sobre pilhas usando Arranjo
3- Procedimento para empilhar (inserir) um elemento no topo (fim) da pilha:
Procedure Empilha(x:tipoitem; var pilha:tipopilha);
Begin
 If pilha.topo = maxtam
 Then writeln(‘Erro: pilha está cheia!’)
 Else begin
 Pilha.topo:=pilha.topo +1; 
 Pilha.item[pilha.topo]:=x; 
 End;
End;
*
Operações sobre pilha usando Arranjo
4- Procedimento para desempilhar (retirar) um elemento do topo (fim) da pilha: 
Procedure Desempilha(var pilha:tipopilha; var item:tipoitem);
Begin
 If vazia(pilha)
 Then writeln(‘Erro: pilha vazia! ’)
 Else begin
 Item:=pilha.item[pilha.topo];
 Pilha.topo:=pilha.topo –1;
 end; 
End;

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais