Título: Lista en C++ (Resuelto) Publicado por: Franz1628 en 7 Julio 2011, 19:49 pm Este es un ejemplo de insertar un nodo a una lista en forma ordenada pero en la parte de la funcion insertarNodo (en la parte de "else" no veo como cambia el *cab para que se haya ingresado el NODO)
El codigo si funciona pero esa parte es la que no entiendo ,supongo que esta parte de : neo->sgte = p->sgte; p->sgte = neo; "Pero esto como afectaria *cab ???" Si alguien tiene alguna idea se lo agradecería ;) Código
Título: Re: Lista en C++ Publicado por: leogtz en 7 Julio 2011, 19:55 pm Tienes que hacer una prueba de escritorio con un diagrama de listas, sino te será dificil entenderlo.
Título: Re: Lista en C++ Publicado por: Franz1628 en 7 Julio 2011, 20:13 pm Bueno lo estoy haciendo en un papel algo asi
por ejemplo ya habiendo ingresado algunos valores mi *cab tendria 10->13-> ahora al ingresar por ejemplo dato = 15 (pasaría esto) entraría a la función insertarNodo dando a neo->dato = 15 ahora entraría en la parte de else porque no es vacía la lista) ahora dando p = *cab; "p" sería 10->13-> (entonces p->sgte sería 13-> && p->sgte->dato sería 13 ) ahora entrando al while (entraria al while ya que 13 es <= 15) entonces p = p->sgte entonces p sería 13-> (y p->sgte sería NULL con esto ya no entra denuevo al while) despues se hace: neo->sgte = p->sgte; (con esto neo->sgte = NULL) y neo sería 15-> ya que neo->dato le dimos 15 despues se hace: p->sgte = neo; (con esto p->sgte = 15->) con esto p sería 13->15-> y terminó Pero donde cambia *cab ?? (se supone que eso hay que modificar !) (a menos que con el p estamos cambiando dentro del *cab )(no entiendo la verdad) :-\ Título: Re: Lista en C++ Publicado por: rir3760 en 7 Julio 2011, 20:16 pm Este es un ejemplo de insertar un nodo a una lista en forma ordenada pero en la parte de la funcion insertarNodo (en la parte de "else" no veo como cambia el *cab para que se haya ingresado el NODO) No lo afecta y ese es el punto.El codigo si funciona pero esa parte es la que no entiendo ,supongo que esta parte de : neo->sgte = p->sgte; p->sgte = neo; "Pero esto como afectaria *cab ???" En la función de inserción primero se revisa si el nuevo nodo debe colocarse como primero, si es así se utiliza "*cab" para modificar el puntero al primer nodo de la lista (la variable "A" de la función "main"). Si no debe insertarse como primero basta con actualizar los punteros "sig" del nodo que corresponda (alguno después del primero) y del nuevo nodo. Un saludo Título: Re: Lista en C++ Publicado por: Khronos14 en 7 Julio 2011, 20:20 pm En C++ puedes usar *& en los parámetros de tus funciones, en vez de ** para pasar la referencia de un puntero.
Saludos. Título: Re: Lista en C++ Publicado por: Franz1628 en 7 Julio 2011, 20:57 pm p=*cab ; eso esta bien
Pero lo que no entiendo es que despues se le da a p = p->sgte y modificando el p se modifica el *cab (eso es muy extraño) Título: Re: Lista en C++ Publicado por: Franz1628 en 8 Julio 2011, 05:27 am Bueno gracias a sus respuestas ya entendí lo que pasaba
que el *cab era tenias todos los datos y era que solo tenia un dato y un puntero a otro nodo :xD Gracias ;-) |