Forum Pplware

Versão Completa: Ajuda em estruturas de dados, utilizando pilha
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Não faço ideia de como fazer essa atividade, se por ventura tiver alguém capacitado em me ajudar ficaria grato!

Uma palavra é um palíndromo se tem a mesma seqüência de letras, quer seja lida da esquerda para a direita ou da direita para a esquerda (exemplo: raiar). Escrever uma função que recebe um ponteiros para uma string e que verifique se a string é um palíndromo. Utilizar pilha(s).
Varios pontos:

É boa norma neste forum deixar uma apresentação aqui antes de criar o primeiro tópico.

Que código é que já fizeste e exactamente onde é que tens problemas? (Não te aconselho a ficares à espera que te façam o trabalho todo, a espera pode ser longa).

Tendo isto esclarecido, bem vindo. Wink
(04-12-2013 10:26)Corvus Escreveu: [ -> ]Varios pontos:

É boa norma neste forum deixar uma apresentação aqui antes de criar o primeiro tópico.

Que código é que já fizeste e exactamente onde é que tens problemas? (Não te aconselho a ficares à espera que te façam o trabalho todo, a espera pode ser longa).

Tendo isto esclarecido, bem vindo. Wink

Fiz esse código, só que ta dando erro, queria que pudessem arrumar pra mim, e gostaria de saber se poderia ta modificando alguma coisa pra deixar ele menor.

Código:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct ELEMENTO_PILHA{
char valor;
ELEMENTO_PILHA *anterior;
};
struct PILHA{
ELEMENTO_PILHA *topo;
};
void init(PILHA *p){
p->topo = NULL;
}
int empty(PILHA *p){
if(p->topo == NULL){
return 1;
}else{
return 0;
}
}
void push(struct PILHA *p,char v){
ELEMENTO_PILHA *novo = (ELEMENTO_PILHA*) malloc(sizeof(ELEMENTO_PILHA));
novo->anterior = p->topo;
p->topo = novo;
novo->valor = v;
}
char pop(PILHA *p){
if(empty(p)){
}else{
char valorRetorno;
ELEMENTO_PILHA *aux = p->topo;
p->topo = aux->anterior;
valorRetorno = aux->valor;
return valorRetorno;
}
}

int string_length(char *str)
{
    int b=strlen(str);
    int i;
    for(i=0,b;i>=b;i++,b--)
        if(str[i]!=str[b])
            return 0;
    return 1;
}


    int main(int argc, char *argv[]){
char texto[50];
int palavra;
int p, i;

printf("Digite uma palavra \n") ;
scanf("%s", &texto);
palavra = strlen(texto);
printf("Tamanho da palavra: %d\n", palavra);
for (i=0, p = palavra-1; i < palavra/2; i++, p--) {
if (texto[i] != texto[p]) {
printf("\nNao e uma palavra palindromo\n");
return 0;
}
}
printf("\nE uma palavra palindromo\n");
}
E qual é o erro que está a dar?
(04-12-2013 16:28)Corvus Escreveu: [ -> ]E qual é o erro que está a dar?


Ta dando erro no ELEMENTO_PILHA *anterior;
Aparentemente falta um struct nessa linha.

Quando metes aqui um tópico, convem que indiques qual o erro que dá e em que sitio. Dizer só "dá um erro" apenas vai fazer com que tenhas menos respostas porque muito pouca gente se vai dar ao trabalho de estar a compilar o programa ou a analiza-lo de cima a baixo para tentar descobrir de que erro te estás a queixar.
URL's de Referência