image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF

SD

Samuel Duque03/01/2024 15:17
Compartilhe

Usando pilhas para checar se uma palavra é um palíndromo

    Oi gente! Achei um código que fiz quando estava iniciando meus estudos sobre pilhas. Decidi compartilhar para ajudar

    caso alguém precise :

    #include <stdio.h>
    #include <stdlib.h>
    
    struct no {
     char caracter;
     struct no *proximo;
    };
    
    struct no *novo_no(char caracter) {
     struct no *no = (struct no *)malloc(sizeof(struct no));
     no->caracter = caracter;
     no->proximo = NULL;
     return no;
    }
    
    void empilhar(struct no **pilha, char caracter) {
     struct no *no = novo_no(caracter);
     no->proximo = *pilha;
     *pilha = no;
    }
    
    char desempilhar(struct no **pilha) {
     if (*pilha == NULL) {
    return '\0';
     }
    
     struct no *no = *pilha;
     *pilha = no->proximo;
     char caracter = no->caracter;
     free(no);
     return caracter;
    }
    
    int eh_palindromo(char *texto) {
     struct no *pilha = NULL;
    
     for (int i = 0; texto[i] != '\0'; i++) {
    if (texto[i] != ' ') {
     empilhar(&pilha, texto[i]);
    }
     }
    
     for (int i = strlen(texto) - 1; i >= 0; i--) {
    if (texto[i] != desempilhar(&pilha)) {
     return 0;
    }
     }
    
     return 1;
    }
    
    int main() {
     char texto[100];
    
     printf("Digite uma sequência de caracteres: ");
     fgets(texto, 100, stdin);
    
     if (eh_palindromo(texto)) {
    printf("A sequência é um palíndromo.\n");
     } else {
    printf("A sequência não é um palíndromo.\n");
     }
    
     return 0;
    }
    
    Compartilhe
    Comentários (1)
    Fernando Araujo
    Fernando Araujo - 03/01/2024 18:13

    muito complexo e acadêmico! quando eu estudava a linguagem C, usava esse tipo de estrutura para listas, filas e pilhas de dados complexos. no caso de strings (cadeias de caracteres), bastava inverter o string e comparar com o string original. se for igual, a palavra é palíndroma, senão, não é! simples assim!