Oppure

Loading
17/10 8:51
lippolis2000
salve, devo creare la classe Lista in C++ per realizzare una lista concatenata semplice (quindi con riferimento al nodo successivo ma non al precedente, ho scritto il seguente codice:


#include <iostream>

using namespace std;

typedef int tipoelem;

class Lista{

public:
    void creaLista();
    bool listaVuota() const;
    void insLista();

private:

    typedef struct{
        tipoelem valore;
        struct Nodo *next;
    }Nodo;

    Nodo *head;

};

int main()
{
    Lista L;
    L.creaLista();
    if(L.listaVuota()){
        cout << "La lista e' vuota" << endl;
    }else{
        cout << "La lista non e' vuota" << endl;
    }
    L.insLista();
    return 0;
}

void Lista::creaLista(){
    head = NULL;
}

bool Lista::listaVuota() const{
    return (head == NULL);
}

void Lista::insLista(){
    Nodo *primo_nodo = new Nodo;
    primo_nodo->valore = 1;
    primo_nodo->next = NULL;
    head->next = primo_nodo;
}
non capisco l'errore che mi dà all'istruzione " head->next = primo_nodo; ", cioè io sto dicendo che dopo aver inserito il primo elemento, la variabile head punta a quel primo elemento

N.B.: la funzione dovrebbe avere come parametri " tipoelem " (nel mio caso intero) e una " posizione " che devo ancora definire, ma per il momento sto cercando di capire questa cosa, grazie in anticipo
18/10 5:45
TheDarkJuster
È un segfault perché head è null e tu ne modifichi il campo next.