Advertisement
Guest User

pilha.c

a guest
Oct 9th, 2015
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 10
  4.  
  5. typedef struct pilha
  6. {
  7.     int dados[MAX], topo;
  8. } tpilha;
  9.  
  10. void inicia_pilha(tpilha *p);
  11. void empilha(tpilha *p, int dado);
  12. int desempilha(tpilha *p);
  13. int pilha_vazia(tpilha p);
  14. int pilha_cheia(tpilha p);
  15. int top(tpilha p);
  16. void imprime_pilha(tpilha p);
  17.  
  18. int main()
  19. {
  20.     tpilha p;
  21.     inicia_pilha(&p);
  22.     int vazia = pilha_vazia(p);
  23.     printf("%d\n", vazia);
  24.     int x, y;
  25.     scanf("%d",&x);
  26.     empilha(&p, x);
  27.     scanf("%d",&y);
  28.     empilha(&p, y);
  29.     int cheia = pilha_cheia(p);
  30.     printf("%d\n", cheia);
  31.     int topp = top(p);
  32.     printf("top = %d\n", topp);
  33.     imprime_pilha(p);
  34.     return 0;
  35. }
  36.  
  37. void inicia_pilha(tpilha *p)
  38. {
  39.     p->topo = -1;
  40. }
  41.  
  42. int pilha_cheia(tpilha p)
  43. {
  44.     return p.topo == MAX-1;
  45.     /*if(p.topo == MAX-1) return 1;
  46.     else return 0;*/
  47. }
  48.  
  49. int pilha_vazia(tpilha p)
  50. {
  51.     return p.topo == -1;
  52. }
  53.  
  54. void empilha(tpilha *p, int dado)
  55. {
  56.     if(!pilha_cheia(*p))
  57.     {
  58.         p->dados[++p->topo] = dado;
  59.         /*p->topo++;
  60.         p->dados[p->topo] = dado;*/
  61.     }
  62.     else printf("pilha cheia!");
  63. }
  64.  
  65. int desempilha(tpilha *p)
  66. {
  67.     int dado;
  68.     if(!pilha_vazia(*p))
  69.     {
  70.         return p->dados[p->topo--];
  71.         /*dado = p->dados[p->topo];
  72.         p->topo--;
  73.         return dado;*/
  74.     }
  75.     else return -1;
  76. }
  77.  
  78. int top(tpilha p)
  79. {
  80.     return p.dados[p.topo];
  81. }
  82.  
  83. void imprime_pilha(tpilha p)
  84. {
  85.     int i;
  86.     for(i=p.topo; i>=0; i--)
  87.     {
  88.         printf("%d ", p.dados[i]);
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement