fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 10
  5.  
  6. typedef struct Pilha pilha;
  7.  
  8. struct Pilha {
  9. int qnt;
  10. int dados[MAX];
  11. };
  12.  
  13. pilha* cria() {
  14. pilha *p;
  15. p = malloc(sizeof(pilha));
  16. if(p != NULL)
  17. p->qnt = 0;
  18. return p;
  19. }
  20. void insere(pilha *p, int valor) {
  21. p->dados[p->qnt] = valor;
  22. p->qnt++;
  23. }
  24. void exibe(pilha *p) {
  25. for(int i= 0; i<p->qnt; i++)
  26. printf("%3d", p->dados[i]);
  27. }
  28.  
  29. pilha* inverte(pilha **p) {
  30. pilha *outra = cria();
  31. while((*p)->qnt >= 0 ) {
  32. outra->dados[outra->qnt] = (*p)->dados[(*p)->qnt];
  33. (*p)->qnt--;
  34. outra->qnt++;
  35. }
  36. return outra;
  37. }
  38. int main() {
  39.  
  40. pilha *p;
  41. p = cria();
  42. insere(p, 32);
  43. insere(p, 45);
  44. insere(p, 78);
  45. exibe(p);
  46.  
  47. p = inverte(&p);
  48. printf("\n");
  49. exibe(p);
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 2300KB
stdin
Standard input is empty
stdout
 32 45 78
  0 78 45 32