quinta-feira, 29 de setembro de 2011

Inclusão e exclusão de elementos em uma pilha

#include <stdio.h>
#include <stdlib.h>

int empilhar(int *pilha, int elemento, int tam, int *pont)
{
    if(tam==*pont)
    {
        printf("\nPilha cheia!\n");
        return 0;
    }
    else{
        pilha[*pont]=elemento;
        *pont=*pont+1;
        return 1;
    }
}

int desempilhar(int *pilha, int tam, int *pont){
    if(*pont==0)
    {
        printf("\nPilha ja vazia!\n");
        return 0;
    }
    else{
        *pont=*pont-1;
        pilha[*pont]=NULL;
        return 1;
    }
}
int main() {

    char op;
    int ok, tam, *pilha, elemento,pont=0,i;
    printf("Informe o tamanho desejado para a pilha: ");
    scanf("%d",&tam);
    if((pilha=(int*)malloc(tam*sizeof(int)))==NULL) exit(1);
    do{
        printf("\n(e)mpilhar (d)esempilhar (s)air: ");
        getchar();
        scanf("%c",&op);
        switch (op){
            case 'e':
                printf("\nInforme o elemento a ser inserido: ");
                scanf("%d",&elemento);
                ok=empilhar(pilha,elemento,tam,&pont);
                if(ok)printf("\nEmpilhamento feito com sucesso!\n");
                else printf("\nNao foi possivel inserir o novo elemento\n");
                for(i=0;i<tam;i++){
                printf("%d\t",pilha[i]);}
                printf("\n");
                break;
            case 'd':
                ok=desempilhar(pilha,tam,&pont);
                if(ok)printf("\nElemento retirado com sucesso!\n");
                else printf("\nNao foi possivel retirar o elemento\n");
                for(i=0;i<tam;i++){
                printf("%d\t",pilha[i]);}
                printf("\n");
                break;
        }
    }while(op!='s');
    return 0;
}

Um comentário: