Salve, sono nuovo sul forum. Devo creare un programma che prese in input due liste ordinate le unisca tramite algoritmo merge e restituisca una lista ordinata.
------------------------------------------------------Questa è la mia struttura generica---------------------------------------------------------------------------------------
struct Cella{ void* cont;
struct Cella *next;
};
typedef struct Cella *List;
---------------------------------------------------------------------Questo è il mio merge---------------------------------------------------------------------------------------
List merge (List LL1, List LL2)
{
/*LL3 è una lista d' appoggio*/
List LL3, last, aux;/*last punta all' ultimo elemento della lista ll3*/
LL3 = calloc(1, sizeof(struct Cella));
LL3->next= NULL;
last= LL3;
while ((LL1 != NULL) && (LL2 !=NULL))
{
if ( LL1->cont <= LL2->cont )
{
/* copio da LL1 in LL3 */
aux = calloc(1, sizeof(struct Cella));
aux->cont = LL1->cont;
aux->next = NULL;
last->next = aux;
last = aux;
LL1 = LL1->next;
}
else
{
/* copio da LL2 in LL3 */
aux = calloc(1, sizeof(struct Cella));
aux->cont = LL2->cont;
aux->next = NULL;
last->next = aux;
last = aux;
LL2 = LL2->next;
}
}
if (LL1 == NULL)
while (LL2 != NULL)
{
aux = calloc(1, sizeof(struct Cella));
aux->cont = LL2->cont;
aux->next = NULL;
last->next = aux;
last = aux;
LL2 = LL2->next;
}
else
while (LL1 != NULL)
{
aux = calloc(1, sizeof(struct Cella));
aux->cont = LL1->cont;
aux->next = NULL;
last->next = aux;
last = aux;
LL1 = LL1->next;
}
return (LL3->next);
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vorrei sapere se è giusto implementare il merge così oppure se devo farne due, uno per il tipo in e l' altro per i char. Se si come dovrei farlo? Grazie mille a chi risponde