[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] Ayuda para programar ls y ps




Lo que yo haría es, en vez de imprimir el nombre o los datos de cada
archivo conforme los vayas recibiendo, los vayas guardando. Tal vez de
primera lo más tentador sería guardarlos en un arreglo, pero esto tiene
las desventajas de que tiene una longitud fija y que reordenar sus datos
puede ser un dolor de cabeza. Creo que lo más fácil sería meterlos a una
bonita lista ligada, y que la función encargada de la inserción vaya
imponiéndoles el órden, de manera que cuando termines de armar tu lista
de elementos baste imprimirla para que te los despliegue ordenados. Y,
claro, con un poquito de juego adicional, podrías especificar por medio
de parámetros qué tipo de ordenamiento llevar a cabo, eligiendo una
diferente función para hacerlo.

Gunnar tiene razon respecto a la dificultad de la longitud de los arreglos, pero puedes simplemente usar malloc y realloc para crear tu arreglo. Lo que Gunnar recomienda es el "insertion sort", que tiene eficiencia n cuadrada. qsort tiene algo asi como n log n, y por eso esta en la biblioteca standard. En general, si quieres ordenar algo y no es ultra-vital la velocidad, aprovecha el qsort de la libc.

Saludos,
Arturo

size = 10
arr = malloc (sizeof (dirent *), size)
i = 0
while (ent = readdir (dir)) {
arr [i] = ent;
i++;
if i == size {
  size *= 2
  arr = realloc (sizeof (dirent *), size)
}
}

qsort (arr, i, sizeof (dirent *), funcion) /* nota que use i (el numero de elementos). size es el tamanio para alloquear de memoria, pero eso era solo para el realloc */

.
.
.

free (arr)

_________________________________________________________________
The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail

_______________________________________________
Ayuda mailing list
Ayuda en linux org mx
Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/



[Hilos de Discusión] [Fecha] [Tema] [Autor]