04-12-2013, 14:42
Alguém poderia me ajudar com esse código, ver se minha linha de raciocínio ta certa e verificar se eu poderia ta modificando alguma coisa pra melhorar o código, também verificar porque ta dando erro no void init(Pilha *p){
Escreva uma função que receba uma pilha estática como parâmetro e inverta a ordem dos elementos.
Escreva uma função que receba uma pilha estática como parâmetro e inverta a ordem dos elementos.
Código:
#include<stdlib.h>
#include<stdio.h>
#define Max 10
struct Pilha{
int topo;
int itens[Max];
};
void init(Pilha *p){
p->topo = -1;
}
int empty(Pilha *p){
if(p->topo == -1){
return 1;
}else{
return 0;
}
}
int stacktopo(Pilha *p){
if(empty(p)){
printf("Pilha vazia");
exit(1);
}else{
return p->itens[p->topo];
}
}
int pop(Pilha *p){
if(empty(p)){
printf("Pilha vazia");
}else{
int valor = p->itens[p->topo];
p->topo--;
return valor;
}
}
void push(Pilha *p, int elemento) {
if (p->topo == (Max-1) ) {
printf("\n pilha cheia ! \n");
exit(1);
} else {
p->topo++;
p->itens[p->topo] = elemento;
}
}
void showStack(Pilha *p){
int i = p->topo;
printf("\n Valores da Pilha \n");
for(;i>=0;i--){
printf("\n %d",p->itens[i]);
}
}
main(){
Pilha pilha;
init(&pilha);
int cont = 0;
int num;
do{
printf("Informe %d: \n",cont+1);
scanf("%d",&num);
push(&pilha,num);
cont++;
}while(cont < 10);
for(;cont>0;cont--){
printf("\n Desempilhado %d",pop(&pilha));
}
}