Advertisement
gaidzinski07

InverterPilha.c

Sep 25th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. typedef struct pilha {
  6.     char *c;
  7.     int tam;
  8.     int topo;
  9. } Pilha;
  10.  
  11. Pilha* pilha_cria(int tam)
  12. {
  13.     Pilha * p = (Pilha*) calloc( 1, sizeof(Pilha) );
  14.     p->c = (char*) calloc( tam, sizeof(char) );
  15.     p->topo = 0;
  16.     p->tam = tam;
  17.     return p;
  18. }
  19. void inverte_palavra(char *c, int n){
  20.       char c1[n];
  21.       int i;
  22.       for(i=0;i<n;i++){
  23.             c1[i] = c[n-i-1];
  24.             printf("%c", c1[i]);
  25.       }
  26. }
  27. void pilha_destruir(Pilha*p)
  28. {
  29.     free(p->c);
  30.     free(p);
  31. }
  32.  
  33. void pilha_push(Pilha* p, char v){
  34.     if (p->topo < p->tam){
  35.         p->c[ p->topo++ ] = v;
  36.     }
  37. }
  38.  
  39. void inverter_pilha(Pilha *p){
  40.  int n = 0;
  41.  int i;
  42.  int j;
  43.  char c1[p->topo];
  44.  for(i = 0; i<p->topo;i++){
  45.         char c2[n];
  46.         if(p->c[i] == ' ' || p->c[i] == '\0' || p->c[i] == '\n'){
  47.                 int j;
  48.                    for(j=0;j<n;j++){
  49.                     c2[j] = c1[j];
  50.                    }
  51.                    inverte_palavra(c2, n);
  52.                    n = 0;
  53.                    printf("%c", p->c[i]);
  54.                    
  55.        }else{
  56.                c1[n] = p->c[i];
  57.                n++;
  58.                 for(j=0;j<n;j++){
  59.                     c2[j] = c1[j];
  60.                 }
  61.                
  62.        }
  63.  }
  64. }
  65.  
  66. void exibir_pilha(Pilha *p){
  67.     int i=0;
  68.     for(i=0; i<p->topo; i++){
  69.         printf("%c", p->c[i]);
  70.     }
  71. }
  72.  
  73.  
  74. int main( void ){
  75.     Pilha *p = pilha_cria(22);
  76.     pilha_push(p, 'E');
  77.     pilha_push(p, 'S');
  78.     pilha_push(p, 'T');
  79.     pilha_push(p, 'A');
  80.     pilha_push(p, ' ');
  81.     pilha_push(p, 'P');
  82.     pilha_push(p, 'R');
  83.     pilha_push(p, 'O');
  84.     pilha_push(p, 'V');
  85.     pilha_push(p, 'A');
  86.     pilha_push(p, ' ');
  87.     pilha_push(p, 'E');
  88.     pilha_push(p, 'S');
  89.     pilha_push(p, 'T');
  90.     pilha_push(p, 'A');
  91.     pilha_push(p, ' ');
  92.     pilha_push(p, 'F');
  93.     pilha_push(p, 'A');
  94.     pilha_push(p, 'C');
  95.     pilha_push(p, 'I');
  96.     pilha_push(p, 'L');
  97.     pilha_push(p, ' ');
  98.  
  99.     printf("PILHA ORIGINAL:\n");
  100.     exibir_pilha(p);
  101.  
  102.     printf("\nPILHA INVERTIDA:\n");
  103.     inverter_pilha( p );
  104.    
  105.     pilha_destruir( p );
  106.     system("PAUSE");
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement