Forum Pplware

Versão Completa: Linguagem C, Estruturas de dados
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
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.


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));        
    }
    
    
}
(começo a parecer um disco riscado...) Tongue

E qual é exactamente o erro que dá?

(Por curiosidade, toda a gente desse curso veio aqui parar ou são as sources que são todas iguais, tirando algumas modificações?)
URL's de Referência