Ir para conteúdo
Fórum Script Brasil
  • 0

Pilha Vetor Em C


leonel

Pergunta

#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

  • 0

amigão, essa sua pilha não está legal,

ela não remove porque sempre "PVET.topo" será igual a -1

tente 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 pilha

ou 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...