#C - Pilha Estática (LIFO)



Para descobrir como fazemos uma pilha, basicamente temos que saber o que é uma pilha. Um pilha nada mais é do que um agrupamento de informações, porém ela tem uma organização diferente de um agrupamento comum, ela tem regras que devem ser seguidas. Primeiramente deve-se ter em sua mente que esta pilha é igual a uma pilha de roupas, pratos, livros... assim como a imagem abaixo demonstra:


E assim como a imagem demonstra o primeiro livro que entra na pilha é o ultimo que sai da pilha, veja que o livro vermelho foi o último livro a entrar na pilha, porém caso fossemos desempilhar ele seria o primeiro livro a ser retirado. Sendo assim:

Primeiro Livro que entra -> Último Livro que sai.
Último Livro que entra -> Primeiro Livro que sai.

Agora que já temos uma boa ideia do que é esta Pilha, vamos compreender como fazer uma Pilha Estática (pilha que tem seu valor fixo).

Primeiramente devemos criar uma variável para nossa pilha:
-Código:
int const MAXTAM = 1000; //Variável constante que irá conter o valor máximo de itens dentro da pilha.
int Pilha[MAXTAM]; //Variável do tipo vetor que será a Pilha.
int Topo; //Variável que irá guardar o item que estará no Topo da Pilha.

Agora que já definimos as variáveis iniciais, vamos definir os tipos de funções para a nossa pilha:

Pilha_Construtor - Função para iniciar criar e iniciar o topo da pilha na posição "Nulo".
-Código:
void Pilha_Construtor(){
    Topo = -1;
}

Pilha_Vazia - Função para verificar se a pilha está vazia.
-Código:
bool Pilha_Vazia(){
    if(Topo==-1){
        return true;
    }else{
        return false;
    }
}

Pilha_Tamanho - Função que verifica e informa o tamanho da pilha.
-Código:
int Pilha_Tamanho(){
    return Topo+1;
}

Pilha_Cheia - Função que verifica e informa se a pilha está cheia.
-Código:
bool Pilha_Cheia(){
    if(Topo==MAXTAM-1){
        return true;
    }else{
        return false;
    }
}

Pilha_Push - Função para adicionar um item na pilha (empilhar).
-Código:
bool Pilha_Push(int valor){
    if( Pilha_Cheia() ){
       return false;
    }else{
        Topo++;
        Pilha[Topo] = valor;
        return true;
    }
}

Pilha_Pop - Função para retirar um item da pilha (desempilhar).
-Código:
bool Pilha_Pop(int &valor){
    if( Pilha_Vazia() ){
        return false;
    }else{
        valor=Pilha[Topo];
        Topo--;
        return true;
    }
}

Pilha_Get - Função para consultar a pilha e ver quem está no topo.
-Código:
bool Pilha_Get(int &valor){ //Consulta
    if( Pilha_Vazia() ){
        return false;
    }else{
        valor=Pilha[Topo];
        return true;
    }
}

Agora que já temos as variáveis e as funções, devemos ir para o código principal e chamar estas funções, irei deixar aqui um pequeno trecho do código principal para que as funcionalidades básicas sejam executadas:

int main(){
    int valor;
    Pilha_Construtor();
    Pilha_Push(5); //Comando para adicionar um item na pilha, 5 é o item.
    system("pause");
    return 0;
}

Basicamente é isto, agora você pode pegar as funções acima e ir fazendo a sua pilha de acordo com sua necessidade. Por fim vou adicionar aqui o video que eu assisti para trazer todas estas informações acima aqui para o blog. Aconselho muito a vocês assistirem!

Video/Referência:

Nenhum comentário:

Postar um comentário