segunda-feira, 7 de junho de 2010

Pilha dinamica em C

#include
#include


struct elemento_pilha{
int info;
struct elemento_pilha *prox;
};


typedef struct {
struct elemento_pilha *topo;
}pilha;





void init(pilha *ps){
ps->topo = NULL;
}



void empty(pilha *ps){
if (ps->topo == NULL){
printf("\nA pilha esta vazia \n\n");
system("pause");
}
else{
printf("\nA pilha nao esta vazia \n\n");
system("pause");
}
}





void push(pilha *ps,int elemento){
struct elemento_pilha *p;
printf("\n\nDigite o elemento para empilhar :");
scanf("%d",&elemento);

p = (struct elemento_pilha *)malloc(sizeof(struct elemento_pilha));
p->info = elemento;
p->prox = ps->topo;
ps->topo = p;
}




void pop(pilha *ps){
int valor_topo;
struct elemento_pilha *aux;

valor_topo = ps->topo->info;
aux = ps->topo;
ps->topo = ps->topo->prox;
free(aux);
printf("\n O valor desempilhado e :%d",valor_topo);
printf("\n\n");
system("pause");
}


void stacksow(pilha *ps){
if (ps->topo==NULL){
printf("valor de topo : %d",ps->topo->info);
ps->topo--;
system("pause");
}
}







int menu (){
int a;
system("cls");
printf("\n(1)EMPTY");
printf("\n(2)PUSH");
printf("\n(3)POP");
printf("\n(4)stacksow");
printf("\n(5)SAIR");
printf("\n\nDIGITE :");
scanf("%d",&a);
return a;
}










main(){
int elemento;
struct pp *ps;
int op;

init(ps);

while(op!=5){

op = menu();

switch(op){
case 1:empty(ps);break;
case 2:push(ps,elemento);break;
case 3:pop(ps);break;
case 4:stacksow(ps);break;
default:printf("\n\n favor digite uma opcao valida ");break;
}
}

getchar();
getchar();
}

Nenhum comentário:

Postar um comentário