Baixe o app para aproveitar ainda mais
Prévia do material em texto
#include "pilha.h" struct pilha { int topo; int dados[MAX]; }; Pilha * cria_Pilha () { Pilha * p; p = (Pilha *) malloc(sizeof(Pilha)); if (p != NULL) { p->topo = 0; } return p; } void libera_Pilha (Pilha **apont) { if (*apont != NULL) { free(*apont); *apont = NULL; } } int Pilha_vazia (Pilha * p) { if (p= !NULL && p->topo !=0) { return 0; } return 1; } int Pilha_cheia (Pilha * p) { if (p != NULL && p->topo == MAX) { return 1; } return 0; } int push (int i, Pilha * p) { if (p != NULL && !Pilha_cheia(p)) { p->dados[p->topo++] = i; return 1; } return 0; } int pop (int *i, Pilha *p) { if (p != NULL & !Pilha_vazia(p)) { *i = p->dados[--p->topo]; return 1; } return 0; } int tamanho_Pilha (Pilha *p) { if (p != NULL & !Pilha_vazia(p)) { return p->topo; } return 0; } int verifica_Pilha (int *i, Pilha *p) { } void mostra_Pilha (Pilha *p, char *msg) { int i; printf ("\n%s\n", msg); if (Pilha_vazia(p)) { printf ("A pilha está vazia"); } else { for (i=p->topo-1; i>=0; i--) { printf ("[%d]", p->dados[i]); } } printf ("\n"); } int palindromo_Pilha (char *palavra) { Pilha * p = cria_Pilha(); int i, letra, teste = 0; for(i=0; i<strlen(palavra); i++) { push(palavra[i], p); } for(i=0; i<strlen(palavra); i++) { pop(&letra, p); if(letra != palavra[i]) { teste = 1; break; } } return teste; }
Compartilhar