Lista concatenata in C++ (puntatori)

di Anonimizzato26991 il
6 risposte
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

  • Scusa ma che vuoi fare con p? Non si capisce
  • 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
  • Ma p è un puntatore non puoi fare l'input da tastiera!
    Forse qualcosa non ti è chiaro...
  • 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
  • Ma che intendi per posizione?
  • 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