5-5 IndexSearch.c
1 #include2 #define INDEXTABLE_LEN 3 3 #define TABLE_LEN 30 4 typedef struct item 5 { 6 int index; //索引值 7 int start; //开始位置 8 int length; //子表长度 9 }INDEXITEM;10 //定义主表数据 11 long stu[TABLE_LEN]={12 1080101,1080102,1080103,1080104,1080105,1080106,0,0,0,0,13 1080201,1080202,1080203,1080204,0,0,0,0,0,0,14 1080301,1080302,1080303,1080304,0,0,0,0,0,0};15 //定义索引表 16 INDEXITEM indextable[INDEXTABLE_LEN]={17 { 10801,0,6},18 { 10802,10,4},19 { 10803,20,4}};20 int IndexSearch(int key) //按索引查找 21 {22 int i,index1,start,length;23 index1=key/100;//计算索引值24 for(i=0;i =INDEXTABLE_LEN)34 return -1;//索引表中查找失败 35 for(i=start;i =INDEXTABLE_LEN)65 return -1;//索引表中查找失败 66 stu[start+length]=key;//保存关键字到主表 67 indextable[i].length++;//修改索引表中的子表长度68 return 0; 69 }70 71 int main()72 {73 long key;74 int i,pos;75 printf("原数据:"); 76 for(i=0;i 0)83 printf("查找成功,该关键字位于数组的第%d个位置。\n",pos);84 else85 printf("查找失败!\n");86 printf("输入插入关键字:");87 scanf("%ld",&key);88 if(InsertNode(key)==-1)89 printf("插入数据失败!\n");90 else91 {92 for(i=0;i