fork(5) 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 = (celula *) 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. printf("\nInvertida: ");
  36. for (int i = 0; frase[i] != '\0'; i++) {
  37. for (; frase[i] != '\0' && frase[i] != ' '; i++) {
  38. empilha(frase[i], &p);
  39. }
  40. while (p.cabeca != NULL) {
  41. putchar(desempilha(&p));
  42. }
  43. putchar(frase[i] == ' ' ? ' ' : '\n');
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0s 4548KB
stdin
OBRIGADO AJUDOU MUITO
stdout
Informe a frase: 
Invertida: ODAGIRBO UODUJA OTIUM