Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- typedef struct pilha {
- char *c;
- int tam;
- int topo;
- } Pilha;
- Pilha* pilha_cria(int tam)
- {
- Pilha * p = (Pilha*) calloc( 1, sizeof(Pilha) );
- p->c = (char*) calloc( tam, sizeof(char) );
- p->topo = 0;
- p->tam = tam;
- return p;
- }
- void inverte_palavra(char *c, int n){
- char c1[n];
- int i;
- for(i=0;i<n;i++){
- c1[i] = c[n-i-1];
- printf("%c", c1[i]);
- }
- }
- void pilha_destruir(Pilha*p)
- {
- free(p->c);
- free(p);
- }
- void pilha_push(Pilha* p, char v){
- if (p->topo < p->tam){
- p->c[ p->topo++ ] = v;
- }
- }
- void inverter_pilha(Pilha *p){
- int n = 0;
- int i;
- int j;
- char c1[p->topo];
- for(i = 0; i<p->topo;i++){
- char c2[n];
- if(p->c[i] == ' ' || p->c[i] == '\0' || p->c[i] == '\n'){
- int j;
- for(j=0;j<n;j++){
- c2[j] = c1[j];
- }
- inverte_palavra(c2, n);
- n = 0;
- printf("%c", p->c[i]);
- }else{
- c1[n] = p->c[i];
- n++;
- for(j=0;j<n;j++){
- c2[j] = c1[j];
- }
- }
- }
- }
- void exibir_pilha(Pilha *p){
- int i=0;
- for(i=0; i<p->topo; i++){
- printf("%c", p->c[i]);
- }
- }
- int main( void ){
- Pilha *p = pilha_cria(22);
- pilha_push(p, 'E');
- pilha_push(p, 'S');
- pilha_push(p, 'T');
- pilha_push(p, 'A');
- pilha_push(p, ' ');
- pilha_push(p, 'P');
- pilha_push(p, 'R');
- pilha_push(p, 'O');
- pilha_push(p, 'V');
- pilha_push(p, 'A');
- pilha_push(p, ' ');
- pilha_push(p, 'E');
- pilha_push(p, 'S');
- pilha_push(p, 'T');
- pilha_push(p, 'A');
- pilha_push(p, ' ');
- pilha_push(p, 'F');
- pilha_push(p, 'A');
- pilha_push(p, 'C');
- pilha_push(p, 'I');
- pilha_push(p, 'L');
- pilha_push(p, ' ');
- printf("PILHA ORIGINAL:\n");
- exibir_pilha(p);
- printf("\nPILHA INVERTIDA:\n");
- inverter_pilha( p );
- pilha_destruir( p );
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement