Pregunta

Actualmente estoy aprendiendo sobre las estructuras de datos y las listas vinculadas. Estoy tratando de crear una lista doblemente vinculada, y no estoy seguro de cómo hacerlo hacerlo. Los datos del 'nodo' me gustaría ser una clase que ya he creado. Todo lo que puedo encontrar en línea sobre las listas vinculadas, simplemente usan valores enteros, y no estoy seguro de la mejor manera de incorporar otras clases.

Lo que creo que haría que hacer es ...

Tengo una cuenta de clase abstracta ''. Luego, las clases 'ahorros' y 'check' se derivan de la cuenta. Me gustaría tener los datos del 'nodo' para ser un tipo de cuenta, posiblemente un puntero de clase base para que se puedan usar "ahorros" y "comprobación".

De lo que no estoy seguro de lo que no estoy seguro, digamos en mi clase de 'Nodo', mis miembros privados de datos son un puntero de la cuenta de la clase base a la cuenta en sí, a un punto de vista siguiente y un punto de referencia anterior. La lista de la clase "administrará la lista vinculada y creará los nuevos nodos. Pero, ¿cómo accedería a las funciones miembro de la cuenta?

Me preguntaba cuál es la mejor manera de acercarse a esto. ¿Debo agregar getters al 'nodo' de clase 'que callen las funciones de GETTER para recuperar datos sobre la cuenta? ¿O sería mejor simplemente hacer "ahorros" y "verificar" los nodos ellos mismos, y agregar un siguiente puntero y un puntero anterior a los miembros de datos privados?

¿Fue útil?

Solución

Debe crear una lista de duebles genéricos

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

De esta manera, su lista serviría como debería, como una lista. Ahora, si necesita una lista de cuentas, simplemente declare una

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

y si necesita tener algunas relaciones entre la cuenta y el resto, puede usar la herencia.

El hecho de que realice su lista genérica y no restringida a ningún tipo haría que su código se vea más elegante, limpio y tiene sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top