Uma pilha (stack) é uma estrutura de dados onde os elementos são inseridos e removidos seguindo o princípio LIFO (Last In, First Out), ou seja, o último elemento a ser inserido é o primeiro a ser removido.
Pense em um baralho de cartas, a última carta é a primeira a ser removida.
-
Primeiro precisamos definir o tamanho da nossa pilha
#define MAX_STACK_SIZE 100
-
Após isso precisamos criar um array, onde armazenaremos os valores inseridos na pilha
new Stack[MAX_STACK_SIZE];
-
Também vamos precisar de uma variavel que armazene a posição do ultimo valor inserido
new top = -1; // -1 significará vazio
Como resultado, esse será o nosso pontapé inicial:
#define MAX_STACK_SIZE 100
new Stack[MAX_STACK_SIZE];
new top = -1;
-
Primeiros criaremos o cabeçalho da nossa função
stock Push(valor) { }
-
Antes de inserir o valor na pilha, precisamos saber se tem espaço suficiente
if(top >= (MAX_STACK_SIZE - 1)) { // A pilha está cheia return 0; }
-
Se a pilha estiver vazia, então podemos inserir o valor na pilha
Stack[++top] = valor; return 1;
Como resultado, essa será a nossa função Push
stock Push(valor)
{
if(top >= (MAX_STACK_SIZE - 1)) return 0;
Stack[++top] = valor;
return 1;
}
-
Primeiros criaremos o cabeçalho da nossa função
stock Pop() { }
-
Antes de remover o valor da pilha, precisamos saber se tem algum valor nela
if(top == -1) { // A pilha está vazia return -1; }
-
Caso tenha algum valor na pilha, retornamos e removemos o seu valor
return Stack[top--];
Como resultado, essa será nossa função Pop
stock Pop()
{
if(top == -1) return -1;
return Stack[top--];
}
Podemos criar funções extras para saber o estado da nossa pilha
Por exemplo, veja essas duas funções IsStackEmpty
e IsStackFull
stock IsStackEmpty() return (top == -1);
stock IsStackFull() return (top >= (MAX_STACK_SIZE - 1));
Eu elaborei um script para testar as funções push
e pop
, acompanhe abaixo
// codigo da minha pilha
#include <stack>
main()
{
Push(5);
Push(10);
Push(25);
printf("1° Valor a sair: %d", Pop());
printf("2° Valor a sair: %d", Pop());
printf("3° Valor a sair: %d", Pop());
}
Como resultado, ao executar o script receberemos os seguintes registros
1° Valor a sair: 25
2° Valor a sair: 10
3° Valor a sair: 5
Este pequeno tutorial simples foi elaborado por DeviceBlack
Espero que façam um bom proveito desse estilo de armazenamento de dados em arrays