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. void empilha(char c, celula *topo) {
  11. celula *nova = malloc(sizeof(celula));
  12. nova->conteudo = c;
  13. nova->prox = topo->prox;
  14. topo->prox = nova;
  15. }
  16.  
  17. char desempilha(celula *topo) {
  18. celula *pt = topo->prox;
  19. char c = pt->conteudo;
  20. topo->prox = pt->prox;
  21. free(pt);
  22. return c;
  23. }
  24.  
  25. int main() {
  26. char frase[50];
  27. celula cabeca;
  28. celula *topo = &cabeca;
  29. topo->prox = NULL;
  30. printf("Informe a frase: ");
  31. fgets(frase, 50, stdin);
  32. for (int i = 0; frase[i] != '\0'; i++) {
  33. empilha(frase[i], topo);
  34. }
  35. printf("\nInvertida: ");
  36. while (topo->prox != NULL) {
  37. putchar(desempilha(topo));
  38. }
  39. putchar('\n');
  40. return 0;
  41. }
Success #stdin #stdout 0s 4544KB
stdin
abcdefghijklmnopqrstuvwxyz
stdout
Informe a frase: 
Invertida: 
zyxwvutsrqponmlkjihgfedcba