Skip to content
Snippets Groups Projects
Commit cf5de56d authored by Leonardo Krambeck's avatar Leonardo Krambeck
Browse files

implementa parcialmente intercala

parent 2cb37827
No related branches found
No related tags found
No related merge requests found
......@@ -12,7 +12,7 @@ int inicializa_lista(t_lista *l)
return 0;
sentinel->prox = NULL;
sentinel->prev = l->ini;
sentinel->prev = NULL;
l->ini = sentinel;
......
......@@ -2,10 +2,6 @@
#include "lib_lista.h"
/*
Funcao que imprime todos os elementos da lista, do inicio ao fim.
Caso a lista seja vazia nao imprime nada, nem um \n
*/
void imprime_lista(t_lista *l)
{
int item;
......@@ -20,10 +16,6 @@ void imprime_lista(t_lista *l)
}
}
/*
Funcao que copia todos os elementos da lista l na lista c.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
*/
int copia_lista(t_lista *l, t_lista *c)
{
int item;
......@@ -45,11 +37,6 @@ int copia_lista(t_lista *l, t_lista *c)
return 1;
}
/*
Concatena os elementos da lista c (na mesma ordem) ao final
da lista l e destroi a lista c.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
*/
int concatena_listas(t_lista *l, t_lista *c)
{
int item;
......@@ -62,10 +49,6 @@ int concatena_listas(t_lista *l, t_lista *c)
return 1;
}
/*
Ordena a lista l em ordem crescente.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
*/
int ordena_lista(t_lista *l)
{
t_lista aux;
......@@ -86,9 +69,40 @@ int ordena_lista(t_lista *l)
}
/*
Funcao que cria uma nova lista i pela intercalacao dos elementos
das listas l e c. As listas l e c devem estar ordenadas.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
Assumindo que as listas l e m já estão ordenadas.
*/
int intercala_listas(t_lista *l, t_lista *m, t_lista *i){return 1;}
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))
{
consulta_item_atual(&item, l);
incrementa_atual(l);
insere_inicio_lista(item, i);
consulta_item_atual(&item, m);
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);
}
return 1;
}
......@@ -4,9 +4,11 @@
int main()
{
t_lista l, u;
t_lista l, u, w;
inicializa_lista(&l);
inicializa_lista(&u);
inicializa_lista(&w);
printf("insere inicio e fim:\n");
insere_inicio_lista(10,&l);
......@@ -40,8 +42,15 @@ int main()
imprime_lista(&l);
printf("\n");
printf("intercala:\n");
intercala_listas(&l, &l, &w);
printf ("lista w: ");
imprime_lista(&w);
printf("\n");
destroi_lista(&l);
destroi_lista(&u);
destroi_lista(&w);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment