typedef struct L {int elem;
    struct L *next;} 
listanode;

typedef listanode *lista;

lista addHead(lista L, int el)
/* POST: ritorna el.L */
{ lista lAux = (lista) malloc(sizeof (listanode));
	/* alloco memoria per un nuovo nodo */
	lAux->elem=el; /* lAux = <el> */
	lAux->next= L; /* lAux = el.L */
	return lAux;
}


lista addTail(lista L, int el)
/* Aggiunge el in coda alla lista L */
{ if (!L) return addHead(L, el);
else
{ L->next= addTail(L->next, el);
	return L; }
}


lista dispari (lista L) {
	lista D=NULL;
	lista aux = L;
	
	while (aux) {
		D= addTail (D, aux->elem);
		if (aux->next) aux=aux->next->next;
		else aux=aux->next;
	}
	return D;
}
