Lista concatenata in C++ (puntatori)

di il
6 risposte

Lista concatenata in C++ (puntatori)

Ciao, sto realizzando una lista concatenata in C++ utilizzando i puntatori, e mi trovo in questa situazione:
typedef int tipoelem;
typedef struct Nodo * posizione;

class Lista{

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

private:

    typedef struct{
        struct Testa *head;
    }Testa;

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

};

int main()
{
    Lista L;
    posizione p;
    cin >> p;
    L.creaLista();
    if(L.listaVuota()){
        cout << "La lista e' vuota" << endl;
    }else{
        cout << "La lista NON e' vuota" << endl;
    }
    return 0;
}

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

bool Lista::listaVuota() const{
    Testa h;
    return (h.head == NULL);
}
dove quei typedef all'inizio devo usarli per rendere la lista astratta e non far notare la realizzazione a chi la usa, cioè devo fare astrazione dati
il problema è che non capisco l'errore di quando faccio " cin >> p ", la posizione (essendo una lista concatenata) è un puntatore a record (il nodo contenente valore e riferimento al nodo successivo), dove sto sbagliando?

6 Risposte

  • Re: Lista concatenata in C++ (puntatori)

    Scusa ma che vuoi fare con p? Non si capisce
  • Re: Lista concatenata in C++ (puntatori)

    Devo fare la funzione di inserimento:
    void inserisciLista(tipoelem e, posizione p){
     // implementazione
    }
    in modo che non si noti dal main e dall'interfaccia com'è realizzata la lista (se con puntatori, vettori ecc.)

    data una posizione p e un elemento e, inserisci e nella lista
  • Re: Lista concatenata in C++ (puntatori)

    Ma p è un puntatore non puoi fare l'input da tastiera!
    Forse qualcosa non ti è chiaro...
  • Re: Lista concatenata in C++ (puntatori)

    E allora come dovrei fare per l'inserimento? cioè non voglio il codice ma solo capire come si definisce la posizione in modo astratto con la typedef visto che dev'essere tutto molto generico

    sul mio libro riporta:

    TYPE Posizione = Nodo^ (^ indica l'asterisco dei puntatori )
    TYPE Nodo = Record {
    valore: tipoelem
    successivo: Posizione
    }
    TYPE Lista = Posizione
  • Re: Lista concatenata in C++ (puntatori)

    Ma che intendi per posizione?
  • Re: Lista concatenata in C++ (puntatori)

    I parametri della funzione di inserimento sono un generico tipo "posizione" (che nel caso delle liste concatenate è un puntatore, nelle liste con vettore e cursori un intero), e un elemento di tipo "tipoelemento" (anche qui un tipo generico definito in alto nel codice)

    nelle specifiche sintattiche della lista dice che la funzione prende in input un tipo posizione, un tipo "elemento" generico e restituisce una nuova lista, lo sto facendo in algoritmi e strutture dati
Devi accedere o registrarti per scrivere nel forum
6 risposte