Ir ao conteúdo
  • Cadastre-se

C++ Palíndroma utilizando fila ED


tudojoia

Posts recomendados

Boa noite, gente! Eu já dei uma olhada aqui no fórum, mas não consegui achar nada que me ajude a entender e resolver meu problema ;v

 

Tenho que desenvolver um programa que verifica se uma determinada palavra é palíndroma utilizando apenas uma fila.

 

A maioria das resoluções da minha professora são utilizando uma struct com os algoritmos comuns da fila (first, empilhar e etc), e no main o problema é resolvido.

 

Abaixo o código da struct da fila:

 

#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;

struct queue {
    private:
        int tamanho = 10;
        int *elementos = new int[tamanho];
        int quantidade = 0;
    
    public:
        void enqueue(int valor) {
            if (quantidade == tamanho) {
                int *temporario = new int[tamanho * 2];
                for (int i = 0; i < tamanho; i++) {
                    temporario[i] = elementos[i];
                }
                elementos = temporario;
                tamanho *= 2;
            }
            elementos[quantidade++] = valor;
        }

        int dequeue() {
            if (quantidade != 0) {
                int retorno = elementos[0];
                for (int i = 0; i < quantidade - 1; i++) {
                    elementos[i] = elementos[i + 1];
                }
                quantidade--;
                return retorno;
            } else {
                throw out_of_range("Fila vazia.");
            }
        }


        int first() {
            if (quantidade != 0) {
                return elementos[0];
            } else {
                throw out_of_range("Fila vazia.");
            }
        }        

        int size() {
            return quantidade;
        }

        bool is_empty() {
            return quantidade == 0;
        }

};


   int main( )  {   

     queue q;

     
  } 

 

O main eu realmente não consigo fazer, mesmo vendo exemplo resolvidos utilizando pilhas e outros métodos. 

 

Falta-me inteligencia lógica, manos.

Desde já, agradeço!

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá

 

dias atrás postei uma explicação sobre a lógica de fazer isso, com exemplos. Veja em 

De qualquer forma o procedimento é

  • Considerar uma fila, do tipo LIFO, last in first out, a fila em que você coloca os caras e o primeiro a sair é o último que entrou, como a clássica pilha de pratos.
  • Você pega a palavra e coloca na tal fila --- pilha --- de letras, letra a letra. Claro que ela vai ficar ao contrário
  • Claro que vai ter o mesmo tamanho de sua string, porque são as mesmas letras
  • Aí você compara letra a letra o que vem da fila e o que tem na string, até a metade dela.
  • Se encontrar algo diferente já pode afirmar que não são iguais.
  • Se chegar até a metade então a palavra é sim palíndroma.

Sugiro ler os exemplos que escrevi lá e se ainda assim tiver dúvida volte a perguntar

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...