Pilhas
Estrutura de Dados
Pilhas




Estrutura de dados variável
LIFO – Last In, First Out (Último a entrar é o
primeiro a sair)
FILO = First In, Last Out (Primeiro que entra é
o último a sair)
Aplicações:


Análise de expressões
Conversão de notações
Introdução a Computação
Representando Pilhas com
Vetor

Vetor


Pilha




Possui uma quantidade prévia de elementos
É dinâmica
Aumenta e diminui conforme empilhamos e
desempilhamos os elementos
Pilhas e Vetores são estruturas diferentes
Iremos utilizar inicialmente vetores para
representarmos as pilhas
Introdução a Computação
Pilhas
ENTRADA
SAÍDA
TOPO
Elemento 2
Elemento 1
BASE
Introdução a Computação
Representado a Pilha

Vamos utilizar uma estrutura (struct) para
representar a nossa pilha que será definida como
pilha
#define MAXPILHA 100
Typedef struct
{
int Topo;
int Item[MAXPILHA];
}pilha;
Introdução a Computação
Representado a Pilha

Levando em consideração a estrutura criada,
podemos declarar uma pilha da seguinte
maneira:
pilha p;
Introdução a Computação
Entendimento da Estrutura

Item


Vetor onde os elementos que são empilhados são
armazenados
Topo


Armazena a posição que se encontra o último
elemento da pilha
Quando a pilha estiver vazia o topo é igual à -1
Introdução a Computação
Manipulação de Pilhas
Iniciando uma Pilha



Inicializa uma Pilha
O topo da pilha passa a ter o valor -1, o qual
indica que a mesma está vazia
O vetor não precisa ser inicializado com 0’s
(zeros)
void IniciaPilha(pilha *pp);
IniciaPilha(&p);
Introdução a Computação
Manipulação de Pilhas
Verificando Limites

Pilha Vazia


Verifica se a pilha está vazia
Retorna:


True – Quando estiver realmente vazia (1)
False – Quando não estiver vazia (0)
int iPilhaVazia(pilha *pp);
iRet = iPilhaVazia(&p);
Introdução a Computação
Manipulação de Pilhas
Verificando Limites

Pilha Cheia


Verifica se a pilha está cheia
Retorna:


True – Quando estiver realmente cheia (1)
False – Quando não estiver cheia (0)
int iPilhaCheia(pilha *pp);
iRet = iPilhaCheia(&p);
Introdução a Computação
Manipulação de Pilhas
Empilhando um Elemento (push)



Adiciona um elemento no topo da pilha
É chamada de PUSH
Deve-se sempre verificar se a pilha já não está
cheia
int iPush(pilha *pp, int iVal);
iRet = iPush(&p, iNum);
Introdução a Computação
Manipulação de Pilhas
Desempilhando um Elemento (pop)



Retira um elemento do topo da pilha
É chamada de POP
Deve-se verificar se a pilha não está vazia
int iPop(pilha *pp);
iRet = iPop(&p);
Introdução a Computação
Manipulação de Pilhas
Consultando o Topo da Pilha

Consulta o elemento do topo da pilha sem
desempilhar o mesmo
int iElemTopo(pilha *pp);
iRet = iElemTopo(&p);
Introdução a Computação
Exercícios

Utilizando as funções de PUSH e POP de pilhas,
coloque na ordem determinada as letras que se
encontrar em uma Pilha P1 na Pilha P2, pode ser
utilizada uma variável auxiliar para realizar as trocas

Frase Original: AES-SI
Introdução a Computação
Download

Pilhas - Objetivo Sorocaba