Você está na página 1de 2

#include<stdio.

h>
#include<stdlib.h>

typedef struct node{


char info; /*informa��o*/
struct node *ant; /* ponteiro para um n� */
}NODE;

NODE *topo = NULL; /* ponteiro para o topo da pilha*/

void push(int c){ /* empilha um caractere */


NODE *novo = (NODE *)malloc(sizeof(NODE)); /* cria um n� novo */
if(novo == NULL){
printf("Pilha cheia. Erro de aloca��o de mem�ria!\n");
}else{
novo->info = c; /* preenche o n� novo */
novo->ant = topo;
topo = novo;
}
}

char pop(){
if(topo != NULL){
NODE *aux = topo; /* auxiliar aponta para topo; Fazer free depois */
int c = topo->info; /*informa��o que est� no topo*/
topo = topo->ant; /* "decrementa" o topo */
free(aux);
return c;
}else{
return '*'; /* pilha vazia */
}
}
void imprime(int topo){
NODE *imp = topo;
while(imp != "\0"){
printf("%d", imp -> info);
imp->ant;
}
printf("----\n");

int main(){
char func;
int num, des;
do{
printf("Selecione uma funcao:\ne - Empilhar\nd - Mostrar o caractere
desempilhado\ni - Estado da pilha\ns - Sair do programa\n");
fflush(stdin);
scanf("%s", &func);
switch (func){

case 'e':
printf("Numero a ser empilhado: \n");
fflush(stdin);
scanf("%d", &num);
push(num);
break;
case 'd':
des = pop();
printf("O caractere desempilhado: %d\n", des);
break;

case 'i':
imprime(topo);
break;

case 's':
printf("Ate logo!\n");
break;

default:
printf("Caractere invalido!");
}
}while(func != 's');

return 0;
}

Você também pode gostar