c语言中index函数,请问C语言中index怎么用?

本文介绍了如何使用索引表在主表中进行高效查找。通过定义索引项结构,包括索引值、子表起始位置和长度,实现对指定索引值的子表定位。接着在找到的子表中,利用顺序查找方法找到目标关键字。算法详细描述了查找过程,并返回目标记录在主表中的下标位置。
摘要由CSDN通过智能技术生成

1.索引表的类型可定义如下:

struct IndexItem

{

IndexKeyType index;

//IndexKeyType为事先定义的索引值类型

int start;

//子表中第一个元素所在的下标位置

int length;

//子表的长度域

};

2.首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定对应子表在主表中的开始位置和长度,然后再根据给定的关键字K2,在对应的子表中查找出

3。关键字等于K2的元素。

设数组A是具有mainlist类型的一个主表,数组B是具有indexlist类型的在主表A上建立的一个索引表,m为索引表B的实际长度,即所含的索引项的个数,K1和K2分别为给定

带查找的索引值和关键字,并假定每个子表采用顺序存储,则索引查找算法为:

int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)

{//利用主表A和大小为 m 的索引表B索引查找索引值为K1,关键字为K2的记录

//返回该记录在主表中的下标位置,若查找失败则返回-1

int i, j;

for (i = 0; i < m; i++)

if (K1 == B[i].index)

break;

if (i == m)

return -1; //查找失败

j = B[i].start;

while (j < B[i].start + B[i].length)

{

if (K2 == A[j].key)

break;

else

j++;

}

if (j < B[i].start + B[i].length)

return j; //查找成功

else

return -1; //查找失败

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值