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();
}