Ir para conteúdo
Fórum Script Brasil
  • 0

Lista encadeada - Comparar caracteres


RS25

Pergunta

Fazer uma função que compare se os caracteres de uma lista l1 e igual aos caracteres da lista l2

Segue o que tentei fazer

#include <stdio.h>
#include <stdlib.h>

typedef struct lista {
   int info;
   struct lista* prox;
} Lista;

Lista* lista_cria() {
   return NULL;
}

Lista* lista_insere (Lista* l, int i) {
   Lista* novo = (Lista*) malloc(sizeof(Lista));
   novo->info = i;
   novo->prox = l;
   return novo;
}

void lista_imprime (Lista* l) {
   Lista* p; 
   for (p = l; p != NULL; p = p->prox)
       printf("info = %d\n", p->info);
}

int igual (Lista* l1, Lista*l2) 
{
     Lista* p1;   
     Lista* p2; 
     
       for (p1 = l1,p2=l2; p1 != NULL&& p2 != NULL; p1 = p1->prox,p2=p2->prox) {

       if (p1->info != p2->info)
       return 0;
       }
       return p1==p2;
}

Lista* lista_libera (Lista* l) {
   Lista* p = l;
   while (p != NULL) {
       Lista* t = p->prox; 
       free(p);           
       p = t;              
   }
   return NULL;
}

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();
   
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Saudações,

Corriga os seguintes pontos no seu código:

- Nas chamadas da função "lista_insere" para a Lista 2 ("l2")

- Você está liberando a memória (uso da função "lista_libera") antes da comparação (uso da função "igual").

- Na função "igual" mude o retorno de "return p1==p2;" para "return 1;".

PS.: Você realmente tentou ou copiou esse código da Web?

Abraços,

William Rodrigues.

Editado por William Rodrigues
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...