Salve a tutti, volevo chiedere a qualcuno di più esperto un parere su quale metodo fra queste due funzioni sia meglio (e il perché) per la creazione di una lista con nodi che si creano solo se il valore in entrata rispetta delle caratteristiche (in questo caso che sia dispari).
Prima funzione:
struct element_t *create_odd_list(int values[], int size) {
struct element_t *current = NULL;
struct element_t *prev = NULL;
struct element_t *new = NULL;
struct element_t *head = NULL;
for(int i = 0; i < size; i++) {
if (values[i] % 2 != 0) {
new = (struct element_t *) malloc(sizeof(struct element_t));
if (new) {
if(head == NULL) {
head = new;
new->next = NULL;
} else {
current = head;
prev = head;
while(current) {
prev = current;
current = current->next;
}
prev->next = new;
}
new->value = values[i];
}
}
}
return head;
}
Seconda funzione:
(La funzione crea fa la malloc e collega i valori, tenete presente che la struct è formata da un intero e dal puntato *next)
struct elem *inserimento_creazione(int val[],int size){
struct elem *temp=NULL;
struct elem *testa=NULL;
for(i=0;i<size;i++){
if(dispari(val[i])){
if(temp){
temp=temp->next=crea(val[i],NULL);
}else{
temp=testa=crea(val[i],NULL);
}
}
}
return testa;
}