Função pilha não imprime

2 respostas
cc++
S

Bom dia a todos, criei esse código, porem ao executar a pilha não esta imprimindo apenas mostrando o topo.

#include<stdio.h>
#include<stdlib.h>
#define MAX 100

typedef int 

	tp_func;

typedef struct {
	
	int topo;
	
	tp_func func[MAX];
	
}tp_pilha;

tp_pilha pilha;

void inicializa_pilha(tp_pilha *f){
	f-> topo =-1;
}

int pilha_vazia(tp_pilha *f){
	if(f->topo ==-1);
	return 1;
	return 0;
	
}

int pilha_cheia(tp_pilha *f){
	
	if(f-> topo == MAX-1)
	return 1;
	return 0;
	
}

int pilha_push(tp_pilha *f, tp_func c){
	if(pilha_cheia(f))
	return 0;
	
	f->topo++;
	f -> func[f->topo] = c;
	
	return 1;	
}


int pilha_pop(tp_pilha *f, tp_func *c){
	if(pilha_vazia(f))
	return 0;
	
	*c = f->func[f->topo];
	f-> topo--;
	
	return 1;
	
}

int pilha_topo(tp_pilha *f, tp_func *c){
	if(pilha_vazia(f))
	*c = f->func[f->topo];
}

void imprime_pilha(tp_pilha f){
	tp_func c;
	while(!pilha_vazia(&f)){
		pilha_pop(&f, &c);
		printf("%d", c);
	}
	
}
int main(){
	
	tp_pilha pilha;
	
	tp_func c;
	
	inicializa_pilha(&pilha);
	pilha_push(&pilha, 5);
	pilha_push(&pilha, 9);
	pilha_push(&pilha, 3);
	pilha_push(&pilha, 1);
	pilha_push(&pilha, 0);
	

	
	printf("%d", pilha.topo);
	
	imprime_pilha(pilha);
	
	
}

2 Respostas

S

n

Fabricio_Ramoss

#include<stdio.h>
#include<stdlib.h>
#define MAX 100

typedef int

tp_func;

typedef struct {

int topo;

tp_func func[MAX];

}tp_pilha;

tp_pilha pilha;

void inicializa_pilha(tp_pilha *f){

f-> topo =-1;

}
int pilha_vazia(tp_pilha *f){

if(f->topo ==-1)				//Retirei o ; do if

return 1;
return 0;

}

int pilha_cheia(tp_pilha *f){

if(f-> topo == MAX-1)
return 1;
return 0;

}

int pilha_push(tp_pilha *f, tp_func c){

if(pilha_cheia(f))

return 0;
f->topo++;
f -> func[f->topo] = c;

return 1;

}

int pilha_pop(tp_pilha *f, tp_func *c){

if(pilha_vazia(f))

return 0;
*c = f->func[f->topo];
f-> topo--;

return 1;

}

void pilha_topo(tp_pilha *f, tp_func *c){		//Passei de int para void

if(pilha_vazia(f))

*c = f->func[f->topo];

}
void imprime_pilha(tp_pilha f){

tp_func c;

while(!pilha_vazia(&f)){

pilha_pop(&f, &c);

printf("%d ", c);

}
}

int main(){

// Retirei o tp_func c; porque não havia funcionalidade.

tp_pilha pilha;
inicializa_pilha(&pilha);
pilha_push(&pilha, 5);
pilha_push(&pilha, 9);
pilha_push(&pilha, 3);
pilha_push(&pilha, 1);
pilha_push(&pilha, 0);
	
printf("%d", pilha.topo);

imprime_pilha(pilha);
	
return 0;

}

Criado 19 de setembro de 2016
Ultima resposta 24 de set. de 2016
Respostas 2
Participantes 2