Archivos de indice en c

Páginas: 7 (1549 palabras) Publicado: 21 de marzo de 2012
Ficheros de índices
Mantener grandes ficheros de datos ordenados es muy costoso, ya que requiere mucho tiempo de procesador. Afortunadamente, existe una alternativa mucho mejor: indicarlos (o indexarlos).
Para indicar un archivo normalmente se suele generar un archivo auxiliar de índices. Existen varios métodos, de los que veremos algunos. El más sencillo es crear un archivo plano que sólocontenga registros con dos campos: el campo o la expresión por la que queremos ordenar el archivo, y un campo con un índexe que almecene la posición del registro indicado en el archivo de datos.
Por ejemplo, supongamos que tenemos un archivo de datos con la siguiente estructura de registro:
-------------------------------------------------
struct stRegistro {-------------------------------------------------
char nombre[32];
-------------------------------------------------
char apellido[2][32];
-------------------------------------------------
char telefono[12];
-------------------------------------------------
char calle[45];
-------------------------------------------------
int numero;
-------------------------------------------------
char ciudad[32];-------------------------------------------------
char fechaNacimiento[9]; // formato AAAAMMDD: Año, mes y día
-------------------------------------------------
char estadoCivil;
-------------------------------------------------
int hijos;
-------------------------------------------------
}
Imaginemos que necesitamos buscar un registro a partir del número de teléfono. Si no tenemos elarchivo ordenado por ese campo, estaremos obligados a leer todos los registros del archivo hasta encontrar el que buscamos, y si el número no está, tendremos que leer todos los registros que existan.
Si tenemos el archivo ordenado por números de teléfono podremos aplicar un algoritmo de búsqueda. Pero si también queremos hacer búsquedas por otros campos, estaremos obligados a ordenar de nuevo elarchivo.
La solución es crear un fichero de índices, cada registro de este archivo tendrá la siguiente estructura:
-------------------------------------------------
struct stIndiceTelefono {
-------------------------------------------------
char telefono[12];
-------------------------------------------------
long indice;
-------------------------------------------------
}
Crearemosel fichero de índices a partir del archivo de datos, asignando a cada registro el campo "telefono" y el número de registro correspondiente. Veamos un ejemplo:
-------------------------------------------------
000: [Fulanito] [Pérez] [Sanchez] [12345678] [Mayor] [15] [Lisboa] [19540425] [S] [0]
-------------------------------------------------
001: [Fonforito] [Fernandez] [López] [84565456][Baja] [54] [Londres] [19750924] [C] [3]
-------------------------------------------------
002: [Tantolito] [Jimenez] [Fernandez] [45684565] [Alta] [153] [Berlin] [19840628] [S] [0]
-------------------------------------------------
003: [Menganito] [Sanchez] [López] [23254532] [Diagonal] [145] [Barcelona] [19650505] [C] [1]
-------------------------------------------------
004: [Tulanito][Sanz] [Sanchez] [54556544] [Pez] [18] [Dublín] [19750111] [S] [0]
Generamos un fichero de índices:
-------------------------------------------------
[12345678][000]
-------------------------------------------------
[84565456][001]
-------------------------------------------------
[45684565][002]
-------------------------------------------------
[23254532][003]-------------------------------------------------
[54556544][004]
Y lo ordenamos:
-------------------------------------------------
[12345678][000]
-------------------------------------------------
[23254532][003]
-------------------------------------------------
[45684565][002]
-------------------------------------------------
[54556544][004]
-------------------------------------------------
[84565456][001]...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Archivo indices
  • Archivos c#
  • Archivos en c++
  • Archivos En C++
  • c++ archivos
  • Archivo en c
  • Archivos c++
  • Creación Archivos C++ (dev c)

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS