Pages

quarta-feira, 6 de julho de 2016

Algoritmo em C - Exemplo de PILHA ESTÁTICA

Algoritmo em C, que representa um Pilha Estática, o algoritmo só cadastra um valor, mostrando o conceito de uma pilha feita em C.

#include <stdio.h>
#define T 5

typedef struct{
        int topo;
        int elementos[T];
}PILHA;

void iniciarPilha(PILHA *p);
int menu();
int overflow(PILHA *p);
int underflow(PILHA *p);
int push(PILHA *P, int *x);
int pop(PILHA *p);
void imprimir(PILHA *p);

int main(){
    PILHA pil;
    int opc, novo;
 
    iniciarPilha(&pil);
 
    do{
        opc = menu();
     
        switch(opc){
            case 1:
               
                 if(!overflow(&pil)){
                     printf("informe um novo valor: ");
                     scanf("%d", &novo);printf("valor %d inserido!\n", push(&pil, &novo));

                   
                 }else
                     printf("Pilha cheia!\n");
                   
                 getche();
                 system("cls");
            break;          
            case 2:
               
                 if(!underflow(&pil))
                     imprimir(&pil);
                 else
                     printf("pilha vazia!\n");
                   
                 getch();
                 system("cls");
            break;
            case 3:
               
                 if(!underflow(&pil))
                     printf("valor %d removido!\n", pop(&pil));
                   
                 else
                     printf("Pilha vazia!\n");
                   
                 getche();
                 system("cls");
            break; case 0: break;
            default: printf("opcao %d incorreta!\n",opc);
        }
    }while(opc != 0);
}
void iniciarPilha(PILHA *p){
     p->topo = -1;
}

int menu(){
    int opc;
 
    printf("1-inserir elemento\n"
           "2-Imprimir pilha\n"
           "3-remover elemento\n"
           "0-sair\n");
    scanf("%d", &opc);
    return opc;
}

int overflow(PILHA *p){
    return p->topo == T -1;
}

int underflow(PILHA *p){
    return p->topo == -1;
}

int push(PILHA *p, int *x){
    p->topo++;
    p->elementos[p->topo] = *x;return p->elementos[p->topo];
}

int pop(PILHA *p){
    int ult;
    ult = p->elementos[p->topo];
    p->topo--;
 
    return ult;
}

void imprimir(PILHA *p){
     int aux;
   
     for(aux = p->topo; aux >= 0; aux--)
         printf("elemento[%d] = %d\n", aux+1, p->elementos[aux]);


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

0 comentários:

Postar um comentário