[C con Clase] Pasaje de listas con punteros a una funcion
Steven Davidson
steven en conclase.net
Jue Ago 9 18:54:11 CEST 2007
Hola Richard,
El pasado 2007-08-09 14:44:09, Richard Sandes escribió:
RS> Estimados,
RS> Tengo la siguiente duda, tengo una estructura definida de la siguiente
RS> manera:
RS> struct ListaNum {
RS> int valor;
RS> ListaNum *siguiente;
RS> }
RS> El cual es una lista de numeros, me pueden enviar una función para insertar
RS> un elemento al comienzo de la lista, he probado varias formas de pasar la
RS> estructura a la función utilizando los operadores * y & y no hay caso, si me
RS> pueden ayudar con esto les agradezco.
Según veo estás implementando una lista dinámicamente enlazada. Sugiero leer el capítulo 1 de nuestro curso de "Estructuras Dinámicas de Datos" (EDD). El enlace es: http://c.conclase.net/edd/index.php?cap=001
Tendrías que definir lo que es una lista enlazada. Si por ejemplo haces lo siguiente,
ListaNum *pComienzo;
entonces podemos pasar la lista de esta manera:
void func( ListaNum *ptr );
Si quieres modificar la lista, por ejemplo para inicializarla, entonces necesitas la variable (puntero) original. En C++, podemos hacer esto con otro puntero,
void init( ListaNum **ptr )
{
*ptr = 0;
}
y su uso sería:
int main()
{
ListaNum *pLista;
init( &pLista );
...
}
o por referencia,
void init( ListaNum * &ref )
{
ref = 0;
}
y este uso sería:
int main()
{
ListaNum *pLista;
init( pLista );
...
}
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase