Gracias por tu ayuda!.. Este es otro código. El cambio del anterior es que la
función "recu_recur()" es una función Recursiva.
¿Porqué en la linea 66 me dice: "Error: Hay demasiados argumentos en la llamada a función"?
Código C++:
Ver originalreco_recur(apun->sig); // Cambio - Nueva Funcion Recursiva
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); // Funcion "crear_lista" - Publico
void leer_nodo(nodo *nuevo); // Funcion - Leer nodo
void imprime_nodo(nodo *apun);
void reco_recur(); // 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() // Cambio - Nueva Funcion Recursiva
{
nodo *apun = inicial;
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;
}