sapete dirmi come posso creare due liste da questo codice, in modo da inserire i numeri pari in una lista e i disari nell'altra? 
Grazie millee!
codice:
#include <stdio.h>
#include <stdlib.h>
//#include <malloc.h>
typedef struct nodo{
int dato;
struct nodo *ptr;
}nodo;
nodo *creazione(){
int appo;
nodo *p;
p = (nodo *) malloc (sizeof (nodo));
printf("\nInserire un valore intero: ");
scanf("%d",&appo);
fflush(stdin);
p->dato = appo;
p->ptr = NULL;
return p;
}
nodo *inserimento (nodo *p){
nodo *q,*r,*s;
q = creazione();
if ((p->dato % 2) == 0){
//Pari
if (p->dato > q->dato){
q->ptr = p;
return q;
}else{
r = p;
s = p;
while ((p->dato < q->dato) && (p->ptr != NULL)){
s = p;
p = p->ptr;
}
if (p->dato > q->dato){
q->ptr = p;
s->ptr = q;
}else{
p->ptr = q;
}
return r;
}
/*}else{
//Dispari
if (p->dato > q->dato){
n->ptr = p;
return n;
}else{
r = p;
s = p;
while ((p->dato < n->dato) && (p->ptr != NULL)){
s = p;
p = p->ptr;
}
if (p->dato > n->dato){
n->ptr = p;
s->ptr = n;
}else{
p->ptr = n;
}
return r;
}*/
}
}
void visualizza(nodo *p){
printf("\nLista: ");
while (p!=NULL){
printf("[ %d ] ",p->dato);
p = p->ptr;
}
printf("\n");
}
int main(){
nodo *Base=NULL;
int scelta=1,appo;
creazione();
while (scelta!=0){
printf("\n111 - Creazione della lista;");
printf("\n1 - Inserimento ordinato nella lista;");
printf("\n2 - Scansione della lista;");
printf("\n0 - Uscita dal programma;");
printf("\nScegliere un'opzione: ");
scanf("%d",&scelta);
fflush(stdin);
switch (scelta){
/*case 1:{
Base = creazione();
break;
}*/
case 1:{
Base = inserimento(Base);
break;
}
case 2:{
visualizza(Base);
break;
}
}
}
getchar();
getchar();
}