//includes da pilha
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
//estrutura
struct noStack{
int info;
noStack *prox;
};
noStack *Stack;
void criarStack(){
Stack = NULL;
}
//verifica se está vazia!
bool Isempty(){
if (Stack == NULL)
return true;
else return false;
}
//metodo para inserir elementos na pilha
void push (int elem){
noStack *novo;
novo = new noStack;
novo -> info = elem;
if (Isempty() == true){
novo -> prox = NULL;
Stack = novo;
}
else {
novo -> prox=Stack;
Stack = novo;
}
system ("PAUSE");
}
//metodo para remover da pilha
void pop()
{
noStack *aux;
if(Isempty() == true){
cout << "\n\nPilha vazia!" << endl;
system("PAUSE");
}
else {
aux = Stack;
Stack = Stack -> prox;
delete aux;
}
}
//ver no topo
noStack top()
{
if(Isempty() == true){
cout << "Pilha vazia!" << endl;
system("PAUSE");
}
else {
printf("\n\no elemento do top e ");
cout << Stack -> info << endl;
system("PAUSE");
}
}
int main()
{
int opcao, elemento;
criarStack();
do {
system("CLS");
cout << "1 - inserir na pilha" << endl;
cout << "2 - remover na pilha" << endl;
cout << "3 - imprimir valores da pilha" << endl;
cout << "0 - sair" << endl;
printf ("\n\nentre com a opcao: ");
cin >> opcao;
switch (opcao){
case 1: printf("\n\nEntre com o elemento que deseja inserir: ");
cin >> elemento;
push (elemento);
break;
case 2: pop();
break;
case 3: top();
break;
case 0: exit(0)
;
}
}while (true == true);
system("PAUSE");
//return EXIT_SUCCESS;
}