问题:明白思想,其他的没什么,记得结构体为指针时一定要动态分配内存。
代码:
#include#include using namespace std;#define MAXL 20typedef struct seq{ int key[MAXL]; int len;}data;typedef struct table{ int start; int end; int d;}index[4];int block_search(index s,data *list,int key) //分块查找{ int i=0; int j; while(i<4&&key>s[i].d) //确定块的地址 i++; if(i>=4) return -1; for(j=s[i].start;j<=s[i].end;j++) { if(list->key[j]==key) return j; } if(j>s[i].end) return -1;}int main(){ data *list; index s; int i,j,p; int key; cout<<"/"<<"分块查找"<<"/"< >list->len; for(i=0;i len;i++) { cin>>list->key[i]; } cout<<"output the list:"< len;i++) { cout< key[i]<<" "; } cout< >s[j].start>>s[j].end>>s[j].d; } cout<<"please input the key:"; cin>>key; p=block_search(s,list,key); if(p==-1) cout<<"can not find"<
运行截图: