Saludos colegas, tengo un problema con el siguiente codigo .. Al parecer no inserta de forma correcta en una lista doble; el problema tambien es que al generar el archivo.txt sale vacio.
//EJERCICIO DE ARCHIVO CON LISTA DOBLEMENTE ENLAZADA
//Generar numeros aleatorio y descomponer cada uno sumando el resultado de
//cada numero. Realizar todo en una lista doblemente enlazada.
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
struct datos {
int num;
};
struct node {
datos data;
node *left;
node *right;
};
node * newList();
node * insert_right(node *list, node data);
void printListAsc(node *current);
void printNode(node *current);
int llenar_archivo(char path[]) ;
int rand_number(int min, int max);
int main(void) {
node *head = newList();
node *current = head;
srand((unsigned int) time(0));
char name[] = "numerosAleatorio.log";
llenar_archivo(name);
return 0;
}
node * newList() {
node *nuevo;
nuevo = new node;
nuevo->data.num = -1;
nuevo->right = nuevo;
nuevo->left = nuevo;
return nuevo;
}
void printNode(node *current) {
cout << current->data.num << endl;
}
void printListAsc(node *head) {
node *current = head;
while (current->right != head) {
current = current->right;
printNode(current);
}
}
node * insert_right(node *list, node data) {
node *nuevo;
nuevo = new node;
nuevo->data = data.data;
nuevo->left = list;
nuevo->right = list->right;
list->right = nuevo;
nuevo->right->left = nuevo;
return nuevo;
}
int llenar_archivo(char path[]) {
node *current;
ofstream myFile;
node myData;
myFile.open(path);
if(myFile.is_open())
{
int Digito,num,Valor;
for(int i=0; i < 500;i++){
int s=0;
myData.data.num=rand_number(1,1000);
while (Valor > 0){
Digito = Valor % 10;
Valor /= 10;
cout<<Digito<<" ";
s=s+Digito;
Valor=myData.data.num;
current = insert_right(current, myData);
}
cout<<endl<<"SUMA: "<< s<<endl;
}
myFile.close();
return 1;
}
return 0;
}
int rand_number(int min, int max) {
return rand() % (max - min + 1) + min;
}