Programación General > C/C++
Función Anidada
(1/1)
AdolfoC:
Hola a todos:
Estoy preparando una pequeña aplicación que usa una lista enlazada. A la hora de crear un nuevo nodo con datos, debo usar una función que además de crear el nodo lo inserte en su sitio.
Todos los fputs/fgets y printf/scanf se solicitan en el programa principal, es decir, las funciones solo realizan las operaciones necesarias y retornan un valor para usar en el "main".
Teniendo esto en cuenta, si la función "crear_nodo" está anidada en la función "insertar_nodo", sería posible pasarle de algún modo los parámetros necesarios a la función "crear_nodo"?
Ejemplo:
int insertar_nodo (str_nodo **cabeza)
{
str_nodo *actual;
str_nodo *anterior;
...
str_nodo *elem = crear_nodo ( DE DÓNDE PUEDO RECIBIR LOS PARAMETROS?);
....
}
Si no quedase otro remedio realizaría las funciones separadamente, pero si fuese posible realizarlo de este modo sería estupendo.
Muchas gracias por la ayuda y saludos!!!
Jeysscarr:
deberias poder pasar un puntero de entrada y salida [ **nuevoNodo ], que mandes como parametro vacio (NULL) a la función CrearNodo junto con los valores de la esctructura, y que esta en su interior le asigne el espacio en memoria y los datos, despues que se ejecute la función crear nodo, seguiria buscar el ultimo nodo, para agregar este que acabas de crear como el que le sigue...
un ejemplo:
--- Código: C++ ---//Una estructura cualquierEstructura Persona{ int edad; char *nombre; persona *Siguiente} void insertarNodo(parametros){ //acciones Persona Nuevo=NULL; CrearNodo(**Nuevo, 16, "EL nombre de la persona",**cabeza,); //en la funcion usaras Malloc.. siseof y todo lo que necesites para darle un espacio en memoria y me imagino que haras algo asi para //buscarle la posicion en la lista [color=#804040]Persona *ptr=*cabeza; while(*ptr->siguiente!=NULL) *ptr=ptr->siguiente; //y continuas con lo tuyo[/color]}
AdolfoC:
Jey, tu respuesta es sumamente aclaratoria, no obstante aun me queda la siguiente duda:
Los valores correspondientes al contenido de la estructura están en el "main", asignados a las variables que les corresponda.
Cómo hago para hacerle llegar estas variables al campo de parámetros de "nuevo_nodo"? Quiero decir, le puedo pasar esos parámetros y que los "reciba" directamente del main a pesar de tratarse de una función anidada en otra?
Agradezco mucho la ayuda.
Un saludo!!!
Epa:
cual es el problema con usarlas por separado.
Que pasa si queres insertar un nodo que ya tenes creado?
Algo que podrias hacer es:
void insertar(nodo *cabeza, nodo *nuevo);
nodo* nuevonodo(tuestructura datos);
y despues llamar:
insertar(cabeza, nuevonodo(dato));
o sino crear una tercera funcion:
--- Código: C++ --- void creainserta(nodo *cabeza, tuestructura datos){ insertar(cabeza, nuevonodo(datos));}
Saludos
AdolfoC:
Claro!!! Es genial, no se me ocurrió realizarlo de ese modo.
Muchas gracias a ambos por la ayuda!!!
Navegación
Ir a la versión completa