Pilhas em c e c++
#include
#include
#define N 3
//Criação da Estrutura "Pilha" struct pilha
{
int topo; char nomes [N][10];
};//No final de toda struct deve ter ponto-e-virgula (;)
//Função para criar a pilha pilha criar_pilha()
{
pilha p; //damos o nome da pilha para "P"
p.topo= -1; //atribuo o valor -1 (vazio) para o topo da pilha return p; //atualizo "p" (pilha "p" vazia)
}
//função que serve apenas para verificar se a pilha está vazia int pilha_vazia (pilha p) //recebe o valor de p (vazio ou não)
{
if (p.topo==-1) //caso seja =-1(vazio) retorne "verdadeiro", caso não, "falso" return true; return false;
}
/*função parecida com a da função acima, mas esse serve para ver se a pilha está cheia*/ int pilha_cheia (pilha p)
{
if (p.topo==N-1)
/*se p.topo(indice do topo da nossa pilha "p") for = N-1 significa que o topo está cheio*/ return true; return false;
}
/*função que serve para empilhar p está sendo passado por referência "&p", está sendo uma variável string "val" para receber os nomes a serem empilhados */ int push (pilha &p, char val[50])
{
if (p.topo==N-1) return false;
/*este "IF" acima serve para ver se a pilha está cheia, caso sim, retorna Falso e pára a execução da function*/
p.topo++;//acrescenta um ao topo da pilha "p" strcpy(p.nomes [p.topo], val);
/*este comando strcpy (string copy) serve para copiar um string para outra, neste caso, de string "val" para p.nomes[numero do topo]*/
//na copia de strings em C++ (strcpy),é invertido do MS-DOS (destino, origem) return true;
}
//Função que serve para desepilhar int pop (pilha &p)
{
if (p.topo==-1)
//Se pilha estiver vazia (=-1), então retorne falso e encerre o modulo return false;
p.topo—; //desempilha 1 por 1 return true;
}
//Função para receber o valor desempilhado pela função anterior int top (pilha p, char val[50])
{
if (pilha_vazia (p)==true)//caso a pilha esteja vazia, encerre o