Você está na página 1de 2

File: /home/karelline/pilhas.

c Page 1 of 2

/**Programa elaborado por Karelline Rosenstock**


Este programa faz a implementao de uma estrutura de dados tipo pilha a partir de valores inseridos
pelo teclado*/

#include <stdio.h>
#define capacidade 30

struct stack
{
int topo, item[capacidade];
};

void inic_pilha (struct stack *p)/*Iniciar a pilha*/


{
p->topo = -1;
}

int pilha_cheia (struct stack *p)/*funo para verificar se a pilha est cheia*/
{
if (p->topo == (capacidade-1))
{
printf ("\n\n\t\tA pilha esta cheia!");
return 1;
}
else
return 0;
}

int pilha_vazia (struct stack *p)/*funo para verificar se a pilha est vazia*/
{
if (p->topo == -1)
{
printf ("\n\n\t\tA pilha esta vazia!");
return 1;
}
else
return 0;
}

int push (struct stack *p, int valor)/*funo para empilhar*/


{
return (p->item[++(p->topo)] = valor);
}

int pop (struct stack *p)/*funo para desempilhar*/


{
int aux;
aux = p->item[(p->topo)--];
return aux;
}

int mostra (struct stack *p)/*funo para mostrar a pilha*/


{
int aux;

if (pilha_vazia (p))
return 1;
else
{
aux = pop (p);
printf ("%d,", aux);
mostra (p);
return 0;
}
}

int empilha (struct stack *p)/*funo para adquirir os valores para empilhar*/
{
int valor;
File: /home/karelline/pilhas.c Page 2 of 2

printf ("Informe um valor para ser empilhado ou -1 para sair ");


scanf ("%d", &valor);

if (pilha_cheia (p))
return 1;
else
{
if (valor == -1)
return 0;
else
{
push (p, valor);
empilha (p);
return 0;
}
}
}

int main ()/*incio*/


{
struct stack pilha;
inic_pilha (&pilha);

empilha (&pilha);

printf ("\nPilha:");
mostra (&pilha);
printf("\n\n\n");

return 0;
}

Você também pode gostar