Comparar 2 listas de caracteres [RESOLVIDO]

1. Comparar 2 listas de caracteres [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 12/04/2011 - 23:46h

Estou com dificuldade em implementar uma lista para comparar se os caracteres são iguais

Segue o que tentei fazer

http://pastebin.com/j1x48EQq

Mais não consigo de jeito nenhum verificar se os elementos ou caracteres são iguais


  


2. MELHOR RESPOSTA

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 13/04/2011 - 09:29h

Então,

Dei uma olhada no código, e percebi que você estava assistindo Simpsons enquanto fazia...
Falta de atenção foi seu erro... O resto tá beleza.

Olha sua função main:

main() {
Lista* l;
Lista* l2;
int n;
l = lista_cria();
l = lista_insere(l, 23);
l = lista_insere(l, 45);
l = lista_insere(l, 67);
l = lista_insere(l, 89);
l = lista_insere(l, 1011);
printf("\nLista original:\n");
lista_imprime(l);

l2 = lista_insere(l, 30);
l2 = lista_insere(l, 44);
l2 = lista_insere(l, 69);
l2 = lista_insere(l, 90);
l2 = lista_insere(l, 1013);

printf("\nLiberando a memoria...\n");
l = lista_libera(l);

printf("\nVerifica se os caracteres são iguais:\n");
igual(l1,l2);

getch();

}

Tirando a declaração do main e o retorno... :)
Essa parte:
lista_imprime(l);

l2 = lista_insere(l, 30);
l2 = lista_insere(l, 44);
l2 = lista_insere(l, 69);
l2 = lista_insere(l, 90);
l2 = lista_insere(l, 1013);

Você não criou a 'l2'
E você coloca a lista de inserção a lista 'l'

lista_insere(l, 30);

...

Você deveria ter feito:

l2 = lista_cria();
l2 = insere(l2 ....

http://pastebin.com/XeZQ4pST

A função igual() retorna 0 se as listas forem diferentes, e 1 se elas forem iguais.

Espero ter ajudado,
Qualquer coisa posta denovo.
Enzo Ferber
[]'s

3. Re: Comparar 2 listas de caracteres [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 13/04/2011 - 09:31h

E o retorna da sua função igual()


Estava assim:

return (p1==p2);


Isso vai SEMPRE retornar falso se forem duas listas alocadas separadas...
p1==p2 é comparação de ponteiros, ou seja, você está comparando dois endereços de memória.

O retorno será sempre falso, A NÃO SER QUE você em algum ponto antes tenha feito:
p1 = p2;

;)

Enzo Ferber
[]'s


4. Re: Comparar 2 listas de caracteres [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 13/04/2011 - 11:06h

EnzoFerber

No final do programa não e só para dizer se os caracteres são iguais?
Esta aparecendo 1.

E outra dúvida como eu faço para ao invés de números entrar caracteres na lista?


5. Re: Comparar 2 listas de caracteres [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 13/04/2011 - 11:31h

Olá,

Para aparecer se eles são iguais em forma de texto:

Nó codigo está assim:
printf( "%d", igual(l,l2));

Para imprimir se é igual ou não:
printf( "%s\n", igual(l,l2) ? "Listas Iguais" : "Listas Diferentes" );

Testa isso ai e vê se funciona.

Para fazer uma lista com caracteres, você precisa mudar o tipo de dados que está declarado para 'info' dentro da sua estrutura, assim:

typedef struct lista {
char info; // AGORA A ESTRUTURA IRÁ CONTER CARACTERES
struct lista* prox;
} Lista;

Para inserir um caractere na lista, usando suas funções:

Lista *lista = lista_cria();
lista = lista_insere(lista, 'V');
lista = lista_insere(lista, 'O');
lista = lista_insere(lista, 'L');

Entendeu?

Espero ter ajudado,
Enzo Ferber
[]'s



6. Re: Comparar 2 listas de caracteres [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 13/04/2011 - 21:07h

Obrigado pela ajuda.

Fiz as alterações e rodou certinho.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts