• Sábado 14 de Diciembre de 2024, 14:43

Autor Tema:  Problemas a la hora de insertar un nodo al principio de la lista  (Leído 1738 veces)

abelique

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problemas a la hora de insertar un nodo al principio de la lista
« en: Jueves 27 de Septiembre de 2012, 14:21 »
0
Por favor habra alguien que me pueda aclara esta duda, intento insertar un nodo al principio de la lista y despues visualizarlo en la pantalla, y no hay manera pq me entra en un bucle sin fin imprimiendo solamente el ultimo nodo insertado infinidades de veces:
el codigo es sencillo y creo que bastante claro:
void insertar_principio()
{
struct nodo *nuevo_nodo ;
nuevo_nodo=new struct nodo;
nuevo_nodo->sgte=NULL;
for (int i=0 ; i<3 ; i++)
  {
    cout<<endl<<"Introduzca el primer numero: ";
    cin >>nuevo_nodo->numero;
       nuevo_nodo->sgte=principio;
       principio=nuevo_nodo;     
  }
principio->sgte=nuevo_nodo;
}
////////////mostrar seria asi//////////////////////////////////
void mostrar3()
{
aux=principio;
while(aux!=NULL)
   {
     cout<<endl<<"--->Numero: "<<aux->numero;
     aux=aux->sgte;                   
   }     
     
}
 y desde main llamamos a las dos funciones.
Alguna aclaracion o algun error que no vea yo, gracias de antemano.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Problemas a la hora de insertar un nodo al principio de la lista
« Respuesta #1 en: Jueves 27 de Septiembre de 2012, 17:28 »
0
Hola abelique, bienvenid al foro.

Tienes 2 errores,

1. No estas creando el nodo adentro del ciclo, sino afuera, entonces solo creas un nodo y no 3, por lo tanto estas encimando el valor de un nodo anterior con un nuevo valor. Debes poner la creacion del nodo adentro del ciclo, para que en cada iteracion cree un nuevo nodo.

2. Despues del ciclo ya no es necesario que modifiques el valor del siguiente nodo, porque lo estas haciendo dentro el ciclo, si lo haces, lo que estaras obteniendo es una lista circular, y las listas circulares se manejan de manera diferente.

La funcion mostrar esta correcta, no necesita cambios.

Dicho eso, te dejo el codigo corregido:

Código: [Seleccionar]
void insertar_principio()
{
    struct nodo *nuevo_nodo ;
    for (int i=0 ; i<3 ; i++)
    {
        nuevo_nodo = new struct nodo;
        nuevo_nodo->sgte=NULL;
        cout<<endl<<"Introduzca el primer numero: ";
        cin >>nuevo_nodo->numero;
        nuevo_nodo->sgte=principio;
        principio=nuevo_nodo;     
    }
    // Esto no es necesario, puesto que adentro del ciclo
    // ya estas asignando al nodo el valor del siguente nodo
    //principio->sgte=nuevo_nodo;
}

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

abelique

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Problemas a la hora de insertar un nodo al principio de la lista
« Respuesta #2 en: Viernes 28 de Septiembre de 2012, 00:42 »
0
Muchas gracias PROFESOR, no me habia dado cuenta de ese error de tantos nodos y pilas estoy saturado
jijiji, de verdad muchas gracias
y la aclaracion perfecta un 10.