@Flávio Pedroza
Flavio, obrigado pela dica. Ja deu uma melhorada, mas inda não consigo utilizar.
A pilha esta vindo cheia, então nao consigo usar o programa.
se puder me ajudar, agradeço.
Segue abaixo o retorno da tela.
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include <iomanip>
// DEFININDO O TAMANHO
#define tamanho 5
//DECLARANDO A ESTRUTURA
typedef struct tipo_proc {
char nome[10];
int PID;
} tipo_proc;
typedef struct tipo_pilha {
tipo_proc dados [tamanho];
int topo;
int ini;
} tipo_pilha;
// VARIÁVEIS GLOBAIS
tipo_pilha pilha;
int op;
//FUNÇÃO DE RETORNO PARA MOSTRAR A PILHA
void mostrar_pilha()
{
int i;
printf("\nSua pilha: \n\n");
for (i = 0; i < tamanho; i++) {
printf("%d \n", pilha.dados);
}
}
//FUNÇÃO PARA EMPILHAR OS ELEMENTOS
void empilhando(tipo_proc elemento)
{
if (pilha.topo == tamanho) {
printf("A pilha está cheia, impossivel empilhar!");
system("pause");
}
else {
pilha.dados[pilha.topo] = elemento;
pilha.topo++;
}
}
//FUNÇÃO PARA DESEMPILHAR OS ELEMENTOS
tipo_proc desempilhando()
{
tipo_proc elemento;
if (pilha.ini == pilha.topo) {
printf("A pilha está vazia, impossivel desempilhar!\n");
system("pause");
}
else {
elemento = pilha.dados[pilha.topo];
for(int i=0; i<tamanho; i++)
pilha.dados[pilha.topo]=elemento;
pilha.topo--;
return elemento;
}
}
// FUNÇÃO PARA ESVAZIAR A PILHA
void esvaziar_pilha()
{
int i;
if (pilha.topo == pilha.ini) {
printf("A pilha esta vazia, impossivel esvaziar!\n\n");
system("pause");
}
else {
for (i = 0; i < tamanho; i++)
{
pilha.dados[pilha.topo];
pilha.topo--;
}
}
}
int main()
{
setlocale(LC_ALL, "Portuguese");
pilha.topo = 0;
pilha.ini = 0;
tipo_proc processo;
processo.PID = 0;
mostrar_pilha();
op = 1; //acrescentar
while(op != 0){ // inicializa antes do while com valor 1
printf("\n ---------------------* Pilha *----------------------- \n");
mostrar_pilha(); //metodo que imprime a pilha
printf("1 - Adicionar elemento na pilha.\n");
printf("2 - Excluir elemento da pilha.\n");
printf("3 - Esvaziar a pilha totalmente.\n");
printf("0 - Encerrar o programa.\n");
printf("S. sair \n");
scanf ("%d", &op); //acrescentar
switch (op)
{
case 1 :
printf("Digite o elemento a ser empilhado: \n");
empilhando(processo); //metodo que empilha;
break;
case 2 :
desempilhando(); //metodo que desempilha
break;
case 3 :
esvaziar_pilha(); //metodo que esvazia
break;
}
}
printf("\nInsira o nome do processo:\n");
scanf("%s",&processo.nome);
fflush(stdin);
empilhando(processo);
printf("\n dados da pilha \n");
printf("PID : %d - nome :%s\n\n",pilha.dados[pilha.ini].PID,pilha.dados[pilha.ini].nome );
}