Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mariana.duarte

Pilhas

Recommended Posts

Boa noite ^^

 

Eu estou desenvolvendo [tentando :P] um projeto usando pilhas, aí pra tentar assimilar o assunto eu usei int e taols, só que quando passei pra char, ficou dando uns errinhos... será que alguém podia me ajudar? A única coisa que ele está fazendo é pedindo pra digitar a peça, e todas as outras opções ele exibia a mensagem que o programa precisa ser fechado =/

 

Se alguém puder me ajudar, agradeço ^^

 

CODE
#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<math.h>

 

struct produto {

char peca;

struct produto *prox;

};

typedef struct produto Produto;

 

struct pilha{

Produto *topo;

};

typedef struct pilha Pilha;

 

 

Pilha* criar(){

Pilha *p = (Pilha*)malloc(sizeof(Pilha));

p->topo = NULL;

return p;

}

 

void push(Pilha *p, char p1){

 

Produto *n = (Produto*)malloc(sizeof(Produto));

n->peca = p1;

n->prox = p->topo;

p->topo = n;

 

}

 

int isEmpty(Pilha *p){

 

if (p->topo==NULL){

return 1;

}

else

return 0;

 

}

 

int pop(Pilha *p){

 

Produto *t;

char v;

 

if(isEmpty(p)){

printf("\nPilha vazia");

exit(1);

}

t=p->topo;

v=t->peca;

p->topo=t->prox;

free(t);

return v;

 

}

 

void topo(Pilha *p){

Produto *pon;

 

if (p->topo == NULL) {

printf("\nPilha vazia\n");

}

else {

pon = p->topo;

printf("\n%c", &pon->peca);

}

}

 

 

main(){

 

char op;

 

Pilha pilha;

Produto produto;

char aux,x,m;

char n;

 

criar();

 

do{

printf("\n1- Criar\n");

printf("\n2- Inserir\n");

printf("\n3- Exibir o elemento do topo\n");

printf("\n4- Verificar se esta vazia\n");

printf("\n5- Remover peca do topo\n");

printf("\n6- Sair\n");

scanf("%c",&op);

system("cls");

 

if(op=='1'){

printf("\nPilha criada!");

getche();

}

if(op=='2'){

printf("\nDigite uma peca:\n");

gets(n);

push(&pilha,n);

getche();

}

if(op=='3'){

topo(&pilha);

getche();

}

if(op=='4'){

aux=isEmpty(&pilha);

if(aux==1){

printf("\n a pilha esta vazia!!");

}

else{

if(aux==0)

printf("\n a pilha nao esta vazia!!!");

}

getche();

}

if(op=='5'){

aux=pop(&pilha);

printf("\n A peca %s foi removida\n",aux);

getche();

}

if(op=='6'){

system("pause");

getche();

}

}while(op!='6');

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom mudei pouca coisa, + ainda você terá q arrumá-lo, sua pilha msm qnd você cria ela esta dizendo q a lista naum esta vazia, c esforce para resolver isso ;D!

 

if(op=='2'){
				   getchar();
				   printf("\nDigite uma peca:\n");
				   //gets(n);
				   scanf("%c", &n);
				   push(&pilha,n);
		   //		getche(); 
	   }

void topo(Pilha *p){
	 Produto *pon;
	 if (p->topo == NULL) printf("\nPilha vazia\n"); 
	 else {
		  pon = p->topo;
		  printf("\n%c", pon->peca);  
	 }
}

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.