C/Visual C - Problema listas enlazadas

 
Vista:

Problema listas enlazadas

Publicado por Adolfo (1 intervención) el 19/01/2008 12:47:59
Hola a todos, tengo una duda, en un ejercicio de lenguaje c, que me pide, realizar una lista de numeros complejos, es de cir de numeros de la forma a+bi, con un campo del nodo para la parte real y otro para la parte imaginaria, y ordenarlos de mayor a menor modulo, en estas dos primeras cuestiones ningun problema, pero tambien me piden, que introduzca una funcion borrar, que no me funciona como deberia;debido a que si en la lista exiset una numero por ejemplo 4+1i, e introduzco un numero pa borrar por ejemplo el 6+1i, me borra, el anterior, como si solo se fijara en la parte imaginaria al recorrer la lista, pero a la inversa con la parte real pasa lo mismo como si siolo se fiajra en una de las dos partes; a continuacion espongo el codigo de la funcion borrar, y el trocito del programa principal donde se hace la llamada, como puedo solucionar esto? y como podria poner para que al usuario le llegara un sms, de que si el numero se ha podido borrar, o no se ha encontrado? muchas gracias!!

funcion :

void borrar(struct complejo **p, float c, float d)//funcion borrar
{
struct complejo *ptr_anterior, *ptr_actual, *ptr_auxiliar;
if ((c == (*p)->imag)&&(d ==(*p)->real)) {
ptr_auxiliar =*p;
*p = (*p)->ptr_sig;
free(ptr_auxiliar);//libera memoria
}//fin del if
else{
ptr_anterior =*p;
ptr_actual = (*p)->ptr_sig;
while ((ptr_actual != NULL) && (ptr_actual->real != c) &&(ptr_actual->imag != d))// busqueda del elemento a borrar
{
ptr_anterior = ptr_actual;
ptr_actual=ptr_actual->ptr_sig;
}//fin del while
if(ptr_actual != NULL){
ptr_auxiliar = ptr_actual;
ptr_anterior->ptr_sig = ptr_actual->ptr_sig;
free(ptr_auxiliar);// libera memoria
}//fin del if
}//fin del else

--------------------------------------------------
parte del programa principal:

case 2://realiza la llamada funcion borrar
printf("Introduzca el número complejo que desea borrar(a,bi)");
scanf("%f,%f",&a,&b);
borrar(&ptr_ini,a,b);
break;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder