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

Problemas para la función eliminar datos en lista enlazada

Estas en el tema de Problemas para la función eliminar datos en lista enlazada en el foro de C/C++ en Foros del Web. Hola a todos, de pronto alguien que me pueda ayudar con este problema, tengo la siguiente estructura: /*INICIO Estructura Proveedores*/ struct Proveedores { char Nombre[50]; ...
  #1 (permalink)  
Antiguo 23/11/2011, 00:56
 
Fecha de Ingreso: mayo-2009
Ubicación: Colombia
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Problemas para la función eliminar datos en lista enlazada

Hola a todos, de pronto alguien que me pueda ayudar con este problema, tengo la siguiente estructura:

/*INICIO Estructura Proveedores*/
struct Proveedores
{
char Nombre[50];
int long Nit;
char Direccion[50];
int long Telefono;
char TipoProducto[150];
struct Proveedores *siguiente;//Puntero de la siguiente entrada
//struct Provedores *anterior; //Puntero de la entrada anterior
};
Proveedores *primero, *ultimo;

En la cual ingreso datos, visualizo y elimino datos con listas enlazadas; ya realice la de ingresar y visualizar; pero la de eliminar no me ha dado: este es el código de dicha función:

void EliminarProveedor()
{

int DatoAEliminar, contador, numelementos;
Proveedores *ultimo, *GenerarReporte;
contador=0;
ultimo=NULL; //apuntador que apunta al registro anterior
GenerarReporte=primero; //apuntador que se va a ir moviendo.... pNodo siempre apunta al principio
numelementos = VisualizarProveedor(); //Muestra los datos como referencia al usuario.
cout<< "\n\r Dame el ID del proveedor: ";
cin>> DatoAEliminar;
if (DatoAEliminar>numelementos){ //si seleccionan una opcion que no esta
cout<< "Dicho ID de proveedor no existe, seleccione uno de la lista"; //saca el mensaje en pantalla y retorna
return EliminarProveedor();
}
while (GenerarReporte)
{
++contador;
if (contador == DatoAEliminar){ // si lo encontra, entonces lo borra
if (primero->siguiente == NULL) { //Es el primer elemento y el unico
primero=NULL;
//return;
}
if (primero->siguiente == GenerarReporte->siguiente){ //es el primero
primero=GenerarReporte->siguiente;
//return 0;
}
if (GenerarReporte->siguiente != NULL){ // si esta en el medio a borrar
ultimo->siguiente=GenerarReporte->siguiente;
GenerarReporte=NULL;
//return 0;
} else { //es el ultimo
ultimo->siguiente=NULL;
GenerarReporte=NULL;
// return 0;
}
}
//se va al siguiente
ultimo=GenerarReporte;
GenerarReporte=GenerarReporte->siguiente;
}
}

Etiquetas: dev-c++, 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 16:43.