Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema para enlazar listas en una funcion

Estas en el tema de problema para enlazar listas en una funcion en el foro de C/C++ en Foros del Web. Estoy haciendo un programa que crea numeros aleatorios, estos numeros los guardo en listas, las cuales el campo INFO es un entero, y a medida ...
  #1 (permalink)  
Antiguo 20/04/2010, 04:58
 
Fecha de Ingreso: enero-2006
Mensajes: 94
Antigüedad: 18 años, 2 meses
Puntos: 2
problema para enlazar listas en una funcion

Estoy haciendo un programa que crea numeros aleatorios, estos numeros los guardo en listas, las cuales el campo INFO es un entero, y a medida que creo los enteros los tengo que ir colocando en las listas de manera ordenada.

les pongo el codigo de la funcion.De momento no me enlaza nada, a ver si saben cual es el problema. Le paso como parametros el nodo de la lista a insertar y la direccion del primero nodo de la lista.

Código:
void insertaordenada(NODO *p, NODO **pp)
{
  int flag=1;
  NODO *paux=*pp;

  while( (*pp)!=NULL && flag)
    {
      if( ( (p->info) > ((*pp)->info) ) )
	{
	  p->sig=(*pp);
	  (*pp)=p;
	  flag=0;
	}
      else
	{
	  pp=&((*pp)->sig);
	}
    }
  
  if(flag)
    {
      pp=&paux;
      p->sig = *pp;
      *pp = p;
    }
}
Muchas gracias!
  #2 (permalink)  
Antiguo 20/04/2010, 05:09
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: problema para enlazar listas en una funcion

No uses la direccion de memoria de una variable local ( &paux ). Las direcciones de ellas no son validas una vez terminada la funcion.
  #3 (permalink)  
Antiguo 20/04/2010, 05:32
 
Fecha de Ingreso: enero-2006
Mensajes: 94
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: problema para enlazar listas en una funcion

pero aun poniendo (*pp=paux) el programa no me funciona :(
  #4 (permalink)  
Antiguo 20/04/2010, 08:21
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: problema para enlazar listas en una funcion

Llevando a un extremo tu respuesta, si divides por 0 tampoco funcionará.
Dicho de otra forma, el que tenga 1 error y lo "corrijas", no significa que no tenga otros, introducidos o no con la corrección.

Tal vez si explicaras para que usas la variable paux, como ha quedado el codigo, que es lo que intentas hacer cuando la usas, tal vez se comprenda mas y sea posible ayudarte mejor.

Considera los casos de borde: lista vacia, el nro es el mayor de todos, el nro es el menor de todos y como se comporta en ese caso la logica de tu funcion.
  #5 (permalink)  
Antiguo 20/04/2010, 08:40
 
Fecha de Ingreso: enero-2006
Mensajes: 94
Antigüedad: 18 años, 2 meses
Puntos: 2
Respuesta: problema para enlazar listas en una funcion

pues pensé que como no sé si la primera lista enlazaba al poder no cumplir la condicion '>', copie la direccion de la variable pp en paux, para despues asignarsela en el caso de que fuese la primera lista.
No se si me he explicado bien, y ni siquiera se si eso está bien...
  #6 (permalink)  
Antiguo 20/04/2010, 09:52
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: problema para enlazar listas en una funcion

Creo que si la intencion es "en caso de problemas o no poder insertar en el ciclo while de arriba" insertar al comienzo de la lista, bastaria con

Código C:
Ver original
  1. if(flag)
  2.     {
  3.       p->sig = *pp;
  4.       *pp = p;
  5.     }

(pero eso no asegura que el resto de la logica esté bien)

Última edición por CalgaryCorpus; 20/04/2010 a las 12:59

Etiquetas: enlazar, funcion, listas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.