diff --git a/lib_lista_complementar.c b/lib_lista_complementar.c index e846740023c29bc7f5777ae59a2db9b2c5f7503c..a0e66dcc6b390bb10ae3f8549dc314861abaa0d9 100644 --- a/lib_lista_complementar.c +++ b/lib_lista_complementar.c @@ -76,33 +76,33 @@ int intercala_listas(t_lista *l, t_lista *m, t_lista *i) if (!inicializa_lista (i)) return 0; - int item; - while (!lista_vazia(l) || !lista_vazia(m)) + if (!inicializa_atual_inicio(l)) + return 0; + if (!inicializa_atual_inicio(m)) + return 0; + + int item1, item2; + + while (consulta_item_atual(&item1, l) && consulta_item_atual(&item2, m)) { - consulta_item_atual(&item, l); - incrementa_atual(l); - insere_inicio_lista(item, i); + insere_fim_lista(item1, i); + insere_fim_lista(item2, i); - consulta_item_atual(&item, m); + incrementa_atual(l); incrementa_atual(m); - insere_inicio_lista(item, i); } - if (lista_vazia(l)) - while (!lista_vazia(m)) - { - consulta_item_atual(&item, m); - incrementa_atual(m); - insere_inicio_lista(item, i); - } - - else - while (!lista_vazia(l)) - { - consulta_item_atual(&item, l); - incrementa_atual(l); - insere_inicio_lista(item, i); - } + while (consulta_item_atual(&item1, l)) + { + insere_fim_lista(item1, i); + incrementa_atual(l); + } + + while (consulta_item_atual(&item2, m)) + { + insere_fim_lista(item2, i); + incrementa_atual(m); + } return 1; } diff --git a/main.c b/main.c index fde3c7d9f5faa5752e8ecbcfc470ddad25296a1c..f1c7bda89772509c25d26b29372fe1ad32aa841e 100644 --- a/main.c +++ b/main.c @@ -10,7 +10,7 @@ int main() inicializa_lista(&u); inicializa_lista(&w); - printf("insere inicio e fim:\n"); + printf("insere inicio e fim em l:\n"); insere_inicio_lista(10,&l); insere_inicio_lista(20,&l); insere_inicio_lista(5,&l); @@ -21,13 +21,16 @@ int main() imprime_lista(&l); printf("\n\n"); - printf("copia:\n"); + printf("copia l em u e w:\n"); copia_lista(&l, &u); printf ("lista u: "); imprime_lista(&u); + copia_lista(&l, &w); + printf ("\nlista w: "); + imprime_lista(&w); printf("\n\n"); - printf("concatena:\n"); + printf("concatena u em l:\n"); concatena_listas(&l, &u); printf ("lista l: "); imprime_lista(&l); @@ -36,16 +39,23 @@ int main() imprime_lista(&u); printf("\n\n"); - printf("ordena:\n"); + printf("ordena l:\n"); ordena_lista(&l); printf ("lista l: "); imprime_lista(&l); - printf("\n"); + printf("\n\n"); - printf("intercala:\n"); - intercala_listas(&l, &l, &w); - printf ("lista w: "); + destroi_lista(&u); + printf("destruindo u\n\n"); + + printf("intercala l com w em u:\n"); + printf("lista l: "); + imprime_lista(&l); + printf("\nlista w: "); imprime_lista(&w); + intercala_listas(&l, &w, &u); + printf ("\nlista u: "); + imprime_lista(&u); printf("\n"); destroi_lista(&l);