Salve a tutti.
Ho un problema con una funzione che serve per creare un nuovo nodo di una lista doppiamente concatenata. La funzione è questa:
Il programma, se lanciato, crasha all'invocazione della funzione add e, a quanto dice il debugger, il problema sta nella lineacodice://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; }
e mi dice che è un errore di segmentation fault. Tra l'altro, il debugger mi segnala anche la lineacodice:head->prev = newElement;
ma suppongo lo faccia solamente perché fa riferimento a una funzione che causa segmentation fault.codice:elemento = add(elemento);
La domanda è: dove diamine sto sbagliando nel "linkaggio"? Grazie in anticipo
EDIT: Ho modificato il codice, nella fretta ho ricopiato male


					
					
					
						
  Rispondi quotando
			