salve, ho svolto queste procedure e funzioni

codice:
int albPercorsi( int scacchiera[][N], nodoPasso& percorso){
    int n=0;
    int i=0;
    int m=0;
    bool flag=true; //variabile per ciclio
    while((i<N*2)&&(flag)){ //metto N*2 trattandosi di matrice

    if ((scacchiera[n+1][m])==0){
            inserisciNodoCoda('A', percorso);
                i++;
                }
                else if ((scacchiera[n][m+1])==0){
                               inserisciNodoCoda('B', percorso);
                i++;
                }
                else 
                    flag=false;
    }   //fine while

    if (flag==true)
        return 1;
        else
                return 0;
                
}

// procedura stampa lista

void stampalista(nodoPasso percorso){
    if(percorso==NULL)
    return;
        else {
                cout<<percorso->info<<" ";
                return stampalista(percorso->next);
                }
}

// procedure liste, creazione ed inserimento
void creaNodo(char info1, nodoPasso& temp){
    temp=new Tpnodo;
    temp->info=info1;
    temp->next=NULL;
}

void inserisciNodoCoda(char info1, nodoPasso& percorso){
    nodoPasso prec, curr;
    if (percorso=NULL)
        creaNodo(info1, percorso);
        else
                curr=percorso;
                prec=NULL;
                while(curr!=NULL){
                prec=curr;
                curr=curr->next;
                creaNodo(info1, prec->next);
                
                }
}

Allora il problema è che non viene creata la lista.
Ora la function principale fà un controllo sulla matrice, e in base al risultato inserisce la lettera A, o la lettera B nella lista.

la mia struct

codice:
struct Tpnodo{
    char info;
    Tpnodo *next;
};

typedef Tpnodo* nodoPasso;

nodoPasso percorso;

qualcuno sa aiutarmi o almeno dirmi perchè la lista non viene creata???
grazie.