/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda con función de lista dinamica

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
pedroafontes



Registrado: 03 Jul 2012
Mensajes: 3

MensajePublicado: 08/02/2013 10:01 am
Título: Ayuda con función de lista dinamica

Buenas tardes expertos!
Necesito una ayuda con una función en C... lo que hace dicha función es enlazar un nuevo al final de una lista dinamica.
Les muestro lo que estoy intentando hacer:

Código:

void insertaFinal(struct NODO **Cab, int dato)
{
    struct NODO *P;
    if(*Cab=NULL)
    {
        P=(struct NODO*)malloc(sizeof(struct NODO));
        P->Val=dato;
        P->Sgte=NULL;
        *Cab=P;
    }
    else
    {
        P=(struct NODO*)malloc(sizeof(struct NODO));
        P->Val=dato;
        P->Sgte=NULL;
    }
}


Mi pregunta es.. como hago para acoplar el nodo generado en en ELSE con el primer nodo que me generó el IF en la primer pasada por la funcion?? Tengo que pasar algun otro puntero a la funcion? Como lo uso?

Les agradezco mucho y ojala me puedan ayudar
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7530
Ubicación: Mexico

MensajePublicado: 08/02/2013 4:38 pm
Título:

Problemas hay varios con esa funcion, el mas importante es el uso del operador de asignación "=" cuando deberías utilizar el de comparación "==":
Código:
if (*Cab = NULL){ /* Deberia ser "==" */


También hay que eliminar la conversión explicita ya que no es necesaria en C y se debe colocar la reserva de memoria antes del bucle para evitar tener ese fragmento repetido.

Con las correcciones la función termina así:
Código:
void insertaFinal(struct NODO **Cab, int dato)
{
   struct NODO *P;
   
   P = malloc(sizeof *P);
   P->Val = dato;
   P->Sgte = NULL;
   
   while (*Cab != NULL)
      Cab = &(*Cab)->Sgte;
   
   *Cab = P;
}


Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com