fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4.  
  5. typedef struct cel {
  6. char conteudo;
  7. struct cel *prox;
  8. } celula;
  9.  
  10. typedef struct pilha {
  11. struct cel *cabeca;
  12. } pilha;
  13.  
  14. void empilha(char c, pilha *p) {
  15. celula *nova = malloc(sizeof(celula));
  16. nova->conteudo = c;
  17. nova->prox = p->cabeca;
  18. p->cabeca = nova;
  19. }
  20.  
  21. char desempilha(pilha *p) {
  22. celula *pt = p->cabeca;
  23. char c = pt->conteudo;
  24. p->cabeca = pt->prox;
  25. free(pt);
  26. return c;
  27. }
  28.  
  29. int main() {
  30. char frase[50];
  31. pilha p;
  32. p.cabeca = NULL;
  33. printf("Informe a frase: ");
  34. fgets(frase, 50, stdin);
  35. for (int i = 0; frase[i] != '\0'; i++) {
  36. empilha(frase[i], &p);
  37. }
  38. printf("\nInvertida: ");
  39. while (p.cabeca != NULL) {
  40. putchar(desempilha(&p));
  41. }
  42. putchar('\n');
  43. return 0;
  44. }
Success #stdin #stdout 0s 4528KB
stdin
abcdefghijklmnopqrstuvwxyz
stdout
Informe a frase: 
Invertida: zyxwvutsrqponmlkjihgfedcba