Advertisement
Guest User

Jesuino

a guest
May 11th, 2009
871
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 KB | None | 0 0
  1. /*
  2. Pilha para inteiros/char em C
  3.  
  4. by William Antônio Siqueira
  5. Informática com Ênfase em Banco de Dados
  6. FATEC SJC 2009
  7.  
  8. Long Live To C Language
  9. */
  10.  
  11. #ifndef ___STDIO_H_
  12.         #include <stdio.h>
  13. #endif
  14.  
  15. #ifndef _PILHA
  16.    #define _PILHA pilha
  17. #endif
  18.  
  19. //Constante que indica o fim da Pilha (Stack UnderFlow)
  20. #ifndef FIM
  21.     #define FIM -1      
  22. #endif
  23.  
  24. typedef struct _pilha{
  25.                int *dados, tamanho, pos;
  26.         }pilha;
  27.  
  28. /*
  29. Recebe um ponteiro para pilha, inicializa as variáveis e aloca memória
  30. Retorna NULL caso haja erro na alocação
  31. */
  32. int novaPilha(pilha *pPilha, int tamanho){
  33.      pPilha->pos = 0;
  34.      pPilha->tamanho = tamanho;
  35.      return (pPilha->dados = malloc(tamanho * sizeof(int)));
  36. }
  37.  
  38. /*
  39. Remove um elementos da Pilha
  40. */
  41. int pop(pilha *pPilha){
  42.     if(!pPilha->pos)
  43.       return FIM;
  44.     else
  45.          return pPilha->dados[--pPilha->pos];    
  46. }
  47.  
  48. /*
  49. Empurra um elemento da Pilha
  50. */
  51. void push(pilha *pPilha, int elemento){
  52.     if(pPilha->pos == pPilha->tamanho)
  53.         printf("Pilha cheia!\n");
  54.     else
  55.         pPilha->dados[pPilha->pos++] = elemento;
  56. }
  57.  
  58. /*
  59. Esvazia todos os elementos da Pilha, imprimindo o resultado
  60. */
  61. void esvaziaPilha(pilha *pPilha){
  62.      int x;
  63.      while(x = pop(pPilha)) printf("%d ", x);
  64.      printf("\n");
  65. }
  66.  
  67. /*
  68. Imprime a pilha sem mexer nos elementos que já foram colocados
  69. */
  70. void imprimirPilha(pilha *pPilha){
  71.      int i;
  72.      for(i=pPilha->pos-1;i>-1;i--)
  73.          printf("%d ", pPilha->dados[i]);
  74.      printf("\n");
  75. }
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement