Domanda

Attualmente sto imparando a conoscere le strutture dati e gli elenchi collegati.Sto cercando di creare un elenco doppiamente collegato e non sono sicuro di come procedere.I dati del 'Nodo' che vorrei fossero una classe che ho già creato.Tutto quello che posso trovare online sugli elenchi collegati, usano solo valori interi e non sono sicuro di come incorporare al meglio altre classi.

Quello che penso che farei è....

Ho una classe astratta "Account".Quindi le classi "Risparmio" e "Controllo" derivano da Conto.Vorrei che i dati del "Nodo" fossero un tipo di account, possibilmente un puntatore alla classe base in modo che sia possibile utilizzare sia "Risparmio" che "Verifica".

Ciò di cui non sono sicuro è, diciamo nella mia classe "Node", che i miei membri di dati privati ​​sono un puntatore "Account" della classe base all'account stesso, un nextPointer e un previousPointer.La classe "List" gestirà l'elenco collegato e creerà i nuovi nodi.Ma allora come potrei accedere alle funzioni membro dell'account?

Mi chiedevo quale sia il modo migliore per affrontare questo problema?Devo aggiungere getter alla classe "Nodo" che chiama le funzioni getter degli account per recuperare i dati sull'account?O sarebbe meglio semplicemente eseguire il "Risparmio" e il "Verifica" dei nodi stessi e aggiungere un puntatore successivo e un puntatore precedente ai membri dei dati privati?

È stato utile?

Soluzione

Dovresti creare una doppia lista generica

template <class T> class List{
    T value;
    Node& next; //Or Node* whatever you choose
    Node& prev;
    public:
     ...
 };

In questo modo la tua lista funzionerebbe come dovrebbe: come una lista.Ora, se hai bisogno di un elenco di account, dichiarane semplicemente uno

List<Account> allAccounts = new List<Account>(); //assuming there's a default c'tor

E se hai bisogno di avere delle relazioni tra Account e il resto puoi usare l'ereditarietà.

Il fatto di rendere il tuo elenco generico e non vincolato ad alcun tipo renderebbe il tuo codice più elegante, pulito e sensato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top