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