Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Sardegna
    Messaggi
    18

    [C] Lista doppiamente concatenata: problema con l'aggiunta di nuovo nodo

    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
    Ultima modifica di alemutasa; 27-03-2015 a 17:42

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.