El objetivo es pasar este código a un formato de
Programación Orientada a Objetos Código Estructural:
Código C++:
Ver original#include "stdafx.h"
#include "iostream"
#include <conio.h>
using namespace System;
using namespace std;
struct nodo
{
int datos;
nodo *sig;
};
nodo *inicial=NULL;
void leer_nodo(nodo *nuevo) // Método - Leer nodo
{
cout<<"Entre valor del nodo"<<endl; // Permite ingresar la cantidad de Nodos
cin>>nuevo->datos;
}
void crear_lista(nodo *anterior, nodo *nuevo)
{
if(anterior == NULL)
{
nuevo->sig = inicial;
leer_nodo(nuevo); // Lee 1ra vez
inicial = nuevo;
}
else
{
nuevo->sig = anterior->sig;
anterior->sig = nuevo;
leer_nodo(nuevo); // Lee N vez
}
}
void imprime_nodo(nodo *apun) // Cambio
{
cout<<"El valor es : "<<apun->datos<<endl;
}
void reco_iter(nodo *apun) // Cambio
{
while(apun != NULL)
{
imprime_nodo(apun); // Imprime valor nodo
apun = apun->sig;
}
}
void borrar_lista(nodo *apun)
{
nodo *inicial;
while(apun != NULL)
{
inicial=apun->sig;
delete apun;
apun=inicial;
}
}
void main()
{
nodo *anterior, *nuevo, *apun; // Cambio -> apun
char resp;
anterior=NULL;
do
{
nuevo = new nodo;
crear_lista(anterior, nuevo);
anterior = nuevo;
cout<<"Desea crear otro nodo? (s/n) "<<endl;
cin>>resp;
}while(resp != 'n');
//inicio del recorrido de la lista
apun = inicial;
reco_iter(apun);
borrar_lista(inicial) ;
}
Código en Objetos con ERROR
Código C++:
Ver original#include "stdafx.h"
#include "iostream"
#include <conio.h>
using namespace System;
using namespace std;
struct nodo
{
int datos;
nodo *sig;
};
class lista // Nueva clase - Lista
{
private:
nodo *inicial;
public:
lista(); // La lista - Publico
~lista(); // ~La lista - Publico
void crear_lista(nodo *anterior, nodo *nuevo); // Metodo "crear_lista" - Publico
void leer_nodo(nodo *nuevo); // Método - Leer nodo
void imprime_nodo(nodo *apun); // Cambio
void reco_iter(nodo *apun); // Cambio
void borrar_lista(nodo *inicial) ;
};
lista::lista()
{
inicial=NULL; // Inicializa NULL
}
void lista::leer_nodo(nodo *nuevo) // Método - Leer nodo
{
cout<<"Entre valor del nodo"<<endl; // Permite ingresar la cantidad de Nodos
cin>>nuevo->datos;
}
void lista::crear_lista(nodo *anterior, nodo *nuevo)
{
if(anterior == NULL)
{
nuevo->sig = inicial;
leer_nodo(nuevo); // Lee 1ra vez
inicial = nuevo;
}
else
{
nuevo->sig = anterior->sig;
anterior->sig = nuevo;
leer_nodo(nuevo); // Lee N vez
}
}
void lista::imprime_nodo(nodo *apun) // Cambio
{
cout<<"El valor es : "<<apun->datos<<endl;
}
void lista::reco_iter(nodo *apun) // Cambio
{
while(apun != NULL)
{
imprime_nodo(apun); // Imprime valor nodo
apun = apun->sig;
}
}
lista::~lista() // Metodo "borrar_lista" - Publico
{
nodo *apun; // " * " es para crear nodo
apun=inicial;
while(apun != NULL)
{
cout<<"borro"<<endl;
inicial=apun->sig;
delete apun;
apun=inicial;
}
}
void main()
{
nodo *anterior, *nuevo, *apun;
lista objlista; // Dar memoria a la lista
char resp;
anterior=NULL;
do
{
nuevo = new nodo;
objlista.crear_lista(anterior, nuevo); // Nuevo metodo
anterior = nuevo;
cout<<"Desea crear otro nodo? (s/n) "<<endl;
}while (resp != 'n');
//inicio del recorrido de la lista
apun = inicial;
objlista.reco_iter(apun);
objlista.borrar_lista(inicial) ;
}
¿Cuál es el error en esta compilación?