Salve a tutti.
Ho un problema con una funzione che serve per creare un nuovo nodo di una lista doppiamente concatenata. La funzione è questa:
codice:
//dichiaro la struttura
struct node{
int data;
struct node *prev;
struct node *next;
};
//la funzione prende il input un puntatore a struttura e restituisce un altro puntatore a struttura
struct node* add(struct node *head){
//dichiaro la variabile di ritorno
struct node *newElement;
//dichiaro la variabile num
int num;
//prendo in input il dato da inserire nel campo data della struttura
printf("insert data: ");
scanf("%d", &num);
//alloco memoria per il nuovo elemento della lista
newElement = (struct node*)malloc(sizeof(struct node));
//carico i risultati presi in input da tastiera
newElement->data = num;
//linko il nuovo elemento in modo da fare un inserimento in testa
head->prev = newElement;
newElement->next = head;
head = newElement;
newElement->prev = NULL;
return newElement;
};
int main(){
struct node *elemento;
elemento = add(elemento);
return 0;
}
Il programma, se lanciato, crasha all'invocazione della funzione add e, a quanto dice il debugger, il problema sta nella linea
codice:
head->prev = newElement;
e mi dice che è un errore di segmentation fault. Tra l'altro, il debugger mi segnala anche la linea
codice:
elemento = add(elemento);
ma suppongo lo faccia solamente perché fa riferimento a una funzione che causa segmentation fault.
La domanda è: dove diamine sto sbagliando nel "linkaggio"? Grazie in anticipo
EDIT: Ho modificato il codice, nella fretta ho ricopiato male