AIUTO MERGE DI DUE LISTE ORDINATE GENERICHE

di il
2 risposte

AIUTO MERGE DI DUE LISTE ORDINATE GENERICHE

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

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte