Como te dije en el post anterior. No agregaste la declaración de la función y no necesitas pasarle argumentos.
Código C++:
Ver original#include <iostream>
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); // Funcion "crear_lista" - Publico
void leer_nodo(nodo *nuevo); // Funcion - Leer nodo
void imprime_nodo(nodo *apun);
void reco_recur(); // Cambio - Nueva Funcion Recursiva
void reco_recur(nodo *apun); // Cambio - Nueva Funcion Recursiva
};
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_recur()
{
reco_recur(inicial);
}
void lista::reco_recur(nodo *apun) // Cambio - Nueva Funcion Recursiva
{
if (apun != NULL)
{
imprime_nodo(apun); // Imprime valor nodo
reco_recur(apun->sig); // Cambio - Nueva Funcion Recursiva
}
}
lista::~lista() // Metodo "borrar_lista" - Publico
{
nodo *apun = inicial; // " * " es para crear nodo
while(apun != NULL)
{
cout << "borro" << endl;
inicial = apun->sig;
delete apun;
apun = inicial;
}
}
int 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;
cin>>resp;
}while (resp != 'n');
//inicio del recorrido de la lista
objlista.reco_recur();
objlista.~lista();
return 0;
}