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