Questa è una funzione che mi sta dando più interruzioni
codice:
lista_elem *crea_lista(nodo_albero nodo, char direzione) {
       void visita_perlista(nodo_albero nodoini, lista_elem *listaini);    
       lista_elem *ptr_lista;
       lista_elem lista;
       nodo_albero *next_nodo;
       ptr_lista = &lista;
       if (nodo == NULL)
          return NULL;
       lista = (lista_elem)malloc(sizeof(struct lista));
       lista->ptr_nodo=nodo;
       lista->next = NULL;

       if (direzione == 'p') {
            visita_perlista(nodo->left, ptr_lista);
       }
       else if (direzione == 's'){
           visita_perlista(nodo->right, ptr_lista);
       }
       return ptr_lista;
}

void visita_perlista(nodo_albero nodoini, lista_elem *listaini) {
     lista_elem temp;
     if (nodoini != NULL) {
          temp = (lista_elem)malloc(sizeof(struct lista));
          if (temp != NULL) {
             (*listaini)->next = temp;
             temp->ptr_nodo = nodoini;
             visita_perlista(nodoini->left,&temp);
             visita_perlista(nodoini->right,&temp);
          }
     }
}
In cui nodo del primo parametro è la radice di un albero binario creato e manipolato da altre funzioni.