¿Qué es un índice en lenguaje C?
Ítem de índice estructural
{
Índice IndexKeyType;
// IndexKeyType es un tipo de valor de índice predefinido.
int start
//La posición del subíndice del primer elemento en la subtabla.
int length;
//El campo de longitud de la subtabla
};
2. valor K1, busque la entrada de índice con un valor de índice igual a K1 en la tabla de índice, determine la posición inicial y la longitud de la subtabla correspondiente en la tabla principal y luego busque en la subtabla correspondiente según la palabra clave dada K2.
3. La clave es igual al elemento de K2.
Supongamos que la matriz A es una tabla principal de tipo lista principal y la matriz B es una tabla de índice construida sobre la tabla principal A de tipo lista de índices. m es la longitud real de la tabla de índice B, es decir, el número de entradas de índice contenidas, dados K1 y K2 respectivamente.
Después de buscar el valor del índice y la palabra clave, suponiendo que cada subtabla se almacena en orden, el algoritmo de búsqueda del índice es:
int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)
{//Utilice la tabla principal A y la tabla de índice B de tamaño m para encontrar el registro con el valor de índice K1 y la clave K2.
//Devuelve la posición del subíndice del registro en la tabla principal. Si la búsqueda falla, se devuelve -1.
int i,j;
for(I = 0;i<m;i++)
if (K1 == B[i].index) p>
Break;
If (i == m)
return-1; //La búsqueda falló.
j = B[i]. inicio;
mientras(j & lt; B[i]. inicio + B[i]. longitud)
{
si (K2 == A [j].Key)
Romper;
Otro
j++;
}
if(j <B[i].start + B[i].length)
Regresar j; //Buscar exitosamente.
Otros
return-1; //La búsqueda falló.
}