Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2014, 20:33
tyrax
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Busqueda Generar un numero variable de nodos para una lista

Buenas noches, disculpen la molestia. Me encuentro realizando un algoritmo que lee una serie de datos de un archivo, los almacena en objetos de una clase que he creado, y luego esos objetos van a una lista.

Ahora, el problema que tengo es que el numero de objetos que debo crear es algo que viene dado en archivo que leo. No se como crear la cantidad de nodos necesaria, ya que no siempre la cantidad de objetos para agregar en la lista sera igual.

He pensado que quiza podria agregar a mi algoritmo la habilidad de agregar nodos mediante el nombre de una variable. Por ejemplo, si tengo una cadena de caracteres llamada "nombre" y que contenga "nodo1" como valor inicial, y fuera cambiando el nombre de la variable cada vez que necesite crear un nodo (nodo1, nodo2, nodo3...). Pero no se si pueda hacerse algo como esto...

Código C++:
Ver original
  1. string nombre = "nodo1"; //Ir cambiando este valir a medida que avanza el algoritmo
  2. nodo nombre; //El valor de nodo tendria que ser nodo1, que es lo que contiene la variable nombre

Les muestro parte de mi codigo, sinceramente no se trabajar bien con listas y a esto es a lo que he podido llegar hasta ahora. Si existe una forma de enlazar cada nodo a su siguiente sin hacer lo que se me ocurrio en principio, estaria inmensamente agradecido con su ayuda. El archivo Datos.txt contiene un numero en su primera linea, que indica el numero de objetos que tendre, y luego la lista de objetos, uno por linea.

Código C++:
Ver original
  1. using namespace std;
  2. class cosa {
  3.     public:
  4.         string nombre;
  5.  
  6.         cosa(){ //Constructor
  7.         nombre = "default";
  8.             }
  9. };
  10.  
  11. struct Nodo{ //Nodo
  12.     cosa G1;
  13.     struct Nodo *sig, *ant;
  14. };
  15. struct Nodo *inicio, *final;
  16.  
  17. int main(){
  18.         int cantidad=0;
  19.     int comodin3;
  20.     int operaciones;
  21.     string comodin1;
  22.     char comodin2[1000];
  23.    
  24.     struct Nodo *sujetos;
  25.     sujetos=new(struct Nodo);
  26.    
  27.     ifstream archivo;
  28.     archivo.open("datos.txt");
  29.             if (archivo == NULL){
  30.                 cout << "El archivo no existe \n" << endl;
  31.                 exit (EXIT_FAILURE);
  32.             }else{ 
  33.    
  34.         archivo.getline(comodin2, 1000, '\n'); //Lectura de numero de objetos
  35.         cantidad = atoi(comodin2);
  36.  
  37.             for (int i=0; i<cantidad; i++){
  38.            
  39.             archivo.getline(comodin2, 1000, '\n'); //Lectura de nombre
  40.             sujetos->G1.nombre = comodin2;
  41.            
  42. //
  43. //  Por aca tendria que agregar el objeto al nodo y enlazar al siguiente
  44. //  Por aca tendria que agregar el objeto al nodo y enlazar al siguiente
  45. //  Por aca tendria que agregar el objeto al nodo y enlazar al siguiente
  46. //  Por aca tendria que agregar el objeto al nodo y enlazar al siguiente
  47. //  Por aca tendria que agregar el objeto al nodo y enlazar al siguiente
  48. //
  49.            
  50.         }
  51.     archivo.close();
  52.     }
  53. }

Podrian darme una solucion que me permita agregar ese objeto al nodo y agregar a un siguiente nodo? Ya sea creando uno nuevo o no.

PD: El codigo original es mucho mas largo, he editado todo lo que he podido para hacerlo lo mas legible y sencillo posible, asi que es posible que encuentren por alli alguna variable no declarada o alguna funcion que no existe. Disculpen por el post tan largo.

Última edición por tyrax; 29/09/2014 a las 20:37 Razón: Agregada post data