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.