Função para verificar se lista em um deque é simetrica

Eu preciso implementar um método ehSimétrico() que retorna verdadeiro caso as duas metades de um deque sejam simétricas e falso caso não seja. Eu consegui fazer essa função abaixo mas ele só retorna false. Alguem me ajuda por favor!!

Exemplos:

A B A A B A → verdadeiro

A B C X Y A → falso

X Y Z Y X → verdadeiro

bool ehSimetrico(Deque* deque) {
int tam = tamanho(deque);
int i;

	No* apontador = deque->cabeca;
	No* anterior = deque->cabeca->anterior;
	char dadoApontador;
	char dadoAnterior;
	
	if(tam % 2 == 0) {
		int limite = tam/2;
		for(i = 1; i <= limite; i++) {
			dadoApontador = apontador->dado.caracteres;
			dadoAnterior = anterior->dado.caracteres;
			if(dadoApontador != dadoAnterior) {
				return false;
			}
			apontador = apontador->proximo;
			anterior = anterior->anterior; 
		}
	}else {
		int limite = floor(tam/2);
		for(i = 1; i <= limite; i++) {
			dadoApontador = apontador->dado.caracteres;
			dadoAnterior = anterior->dado.caracteres;
			if(dadoApontador != dadoAnterior) {
				return false;
			}
			apontador = apontador->proximo;
			anterior = anterior->anterior;
		}
	}
	return true;
}
1 curtida

conseguiu alguma resposta? Tenho que fazer o mesmo exercício.

É só você ir comparando os elementos da sua fila:

  • se o primeiro é igual ao último
  • se o segundo é igual ao penúltimo
  • se o terceiro é igual ao antepenúltimo

e assim sucessivamente até chegar até a metade da fila.