Hola, gente.
como se podrán imaginar aveces hago post que se me ocurren a mí solamente, pero si los hago es porque me resulta de mucha ayuda para aprender en serio y no en distintas ocasiones tener que copiar y pegar. -
Les dejo la función para que en primer lugar me ayuden a documentarla, yo hice algunas lineas para que la tomen como Ej. para que se entienda lo que necesito. -
Si alguien tiene otra versión y la quiere postear, mi agradecimiento. -
Saludos.
como se podrán imaginar aveces hago post que se me ocurren a mí solamente, pero si los hago es porque me resulta de mucha ayuda para aprender en serio y no en distintas ocasiones tener que copiar y pegar. -
Les dejo la función para que en primer lugar me ayuden a documentarla, yo hice algunas lineas para que la tomen como Ej. para que se entienda lo que necesito. -
Si alguien tiene otra versión y la quiere postear, mi agradecimiento. -
Código (c) [Seleccionar]
struct lista *eliminarIndice( struct lista *L, int indice){
int i = 1;
if( L != NULL ){ // Verificamos que la lista no este vacia.
if( indice <= 10 && indice > 0){ // Si indice es mayor a cero y menor o igual a la cant. de elemento continuamos.
struct nodo *anterior = L->primero; // Grabamos en anterior la direc. del primer nodo.
struct nodo *pivote = L->primero; // Y lo mismo con pivote.
while( i < indice ){ // Bucle para....
anterior = pivote;
pivote = pivote->siguiente;
i++;
}
if( pivote->siguiente != NULL ){
if( pivote->siguiente != L->primero ){
anterior->siguiente = pivote->siguiente;
free( pivote );
}else{
L->primero = pivote->siguiente;
free( pivote );
}
}else{
if( pivote != L->primero ){
anterior->siguiente = NULL;
free( pivote );
L->ultimo = anterior;
}else{
free( pivote );
}
}
L->elementos--;
if( L->elementos == 0){
free( L );
return NULL;
}else{
return L;
}
}else{
printf( "\n El indice pedido es mayor que los elementos existentes..." );
return L;
}
}else{
printf( "\n No se puede procesar una lista vacia..." );
return NULL;
}
}
Saludos.