leonel Postado Setembro 2, 2006 Denunciar Share Postado Setembro 2, 2006 #include<stdio.h>#include<stdlib.h>#define MAX 10//--------------------------------estrutura---------------------------typedef struct pin { int P[MAX]; int topo; }PILHA; int push (PILHA PVET, int vr); int pop(PILHA PVET);int pilhacheia (PILHA PVET);int pilhavazia (PILHA PVET);int elemento_topo (PILHA PVET);//----------------------MAIN------------------------------------------int main(){ PILHA pilha; pilha.topo=-1; int opc='s',retorno,aux; while(opc!=0) { puts("\n"); puts("[1] Insira:"); puts("[2] Remova:"); puts("[3] Mostra Topo:"); puts("[0] Sair do Programa:"); printf ("\nDigite Opcao Desejada:\n\n"); scanf("%d",&opc); switch(opc) { case 1: printf("Insere na pilha:"); scanf("%d",&aux); retorno=push(pilha,aux); if(retorno==1) printf("O valor incrementado na pilha!\n"); else printf("Pilha Cheia!"); break; case 2: retorno=pop(pilha); if (retorno==1) printf("Topo da pilha removido!\n"); else printf("Pilha Vazia!\n"); break; case 4: pop(pilha); break; case 3: retorno=elemento_topo(pilha); if (retorno!=-999) printf("Pilha Vazia!"); else printf("O elemento Topo da Pilha e:%d",aux); break; case '0': printf(" Sair do Programa "); break; } getchar(); } }//##############FUNCOES##################//##########COLOCAR###################### int push (PILHA PVET, int vr){ int ret=0; if(!pilhacheia(PVET)){ PVET.P[++PVET.topo]=vr; ret=1; } return (ret); } //#########REMOVE######################## int pop(PILHA PVET){ int ret=0; if (!pilhavazia(PVET)){ PVET.topo--; ret=1; } return (ret);} //########PILHACHEIA######################int pilhacheia (PILHA PVET){ return (PVET.topo==MAX-1); } //########PILHAVAZIA######################int pilhavazia (PILHA PVET){ return (PVET.topo==-1);}//#########ELEMENTO_TOPO##################int elemento_topo (PILHA PVET){ int ret=-999; if (!pilhavazia(PVET)) ret=PVET.P[PVET.topo]; return (ret);}DESDE já AGRADEÇO... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Setembro 4, 2006 Denunciar Share Postado Setembro 4, 2006 amigo, e qual é sua dúvida? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Setembro 4, 2006 Denunciar Share Postado Setembro 4, 2006 amigão, essa sua pilha não está legal,ela não remove porque sempre "PVET.topo" será igual a -1tente chegar ao limite "MAX" pra ver o que acontece, ela só retorna o valor certo de topo porque voce usa a variável "aux" que contem sempre a última coisa que voce digitou.falta encadear essa sua pilhaou usar indexar mesmo, e voce deve passar a pilha por referencia, pois o conteúdo dela será alterado dentro das funções remove e insere. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
leonel
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
//--------------------------------estrutura---------------------------
typedef struct pin {
int P[MAX];
int topo;
}PILHA;
int push (PILHA PVET, int vr);
int pop(PILHA PVET);
int pilhacheia (PILHA PVET);
int pilhavazia (PILHA PVET);
int elemento_topo (PILHA PVET);
//----------------------MAIN------------------------------------------
int main()
{
PILHA pilha;
pilha.topo=-1;
int opc='s',retorno,aux;
while(opc!=0)
{
puts("\n");
puts("[1] Insira:");
puts("[2] Remova:");
puts("[3] Mostra Topo:");
puts("[0] Sair do Programa:");
printf ("\nDigite Opcao Desejada:\n\n");
scanf("%d",&opc);
switch(opc)
{
case 1:
printf("Insere na pilha:");
scanf("%d",&aux);
retorno=push(pilha,aux);
if(retorno==1)
printf("O valor incrementado na pilha!\n");
else
printf("Pilha Cheia!");
break;
case 2:
retorno=pop(pilha);
if (retorno==1)
printf("Topo da pilha removido!\n");
else
printf("Pilha Vazia!\n");
break;
case 4:
pop(pilha);
break;
case 3:
retorno=elemento_topo(pilha);
if (retorno!=-999)
printf("Pilha Vazia!");
else
printf("O elemento Topo da Pilha e:%d",aux);
break;
case '0':
printf(" Sair do Programa ");
break;
}
getchar();
}
}
//##############FUNCOES##################
//##########COLOCAR######################
int push (PILHA PVET, int vr){
int ret=0;
if(!pilhacheia(PVET)){
PVET.P[++PVET.topo]=vr;
ret=1;
}
return (ret);
}
//#########REMOVE########################
int pop(PILHA PVET){
int ret=0;
if (!pilhavazia(PVET)){
PVET.topo--;
ret=1;
}
return (ret);
}
//########PILHACHEIA######################
int pilhacheia (PILHA PVET){
return (PVET.topo==MAX-1);
}
//########PILHAVAZIA######################
int pilhavazia (PILHA PVET){
return (PVET.topo==-1);
}
//#########ELEMENTO_TOPO##################
int elemento_topo (PILHA PVET){
int ret=-999;
if (!pilhavazia(PVET))
ret=PVET.P[PVET.topo];
return (ret);
}
DESDE já AGRADEÇO...
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.