一、操作要求
1.根据输入的查找表的表长n和n个关键字值,建立顺序查找表;
2.用顺序查找方法在上述顺序查找表中查找与已经给定关键值相等的记录;
3.选择一种排序方法对1中建立的顺序查找表进行排序;
4.在3中的有序查找表中用二分查找方法查找与已经给定关键值相等的记录 ;
5.编写main函数,设计菜单使用户能通过菜单的选择多次通过调用上述功能函数来实现所选择的查找操作,并且在每次操作后都输出其操作结果:若查找成功,则输出“查找成功”并输出这条记录在表中的位置,否则输出“查找失败”。
二、代码实现
#include#include #define OK 1 #define ERROR 0 typedef int Status; typedef int keyType; typedef struct{ keyType key; }Elemtype; typedef struct{ Elemtype *elem; int length; int listsize; }SSTable; //动态不像静态可以直接分配空间 Status creatsstable(SSTable &L,int n){ L.elem=(Elemtype *)malloc(100*sizeof(Elemtype)); if(!L.elem) return ERROR; L.length=n; L.listsize=100; printf("请输入表中的值:n"); for(int i=1;i<=n;i++){ scanf("%d",&L.elem[i].key); } return OK; }//创建一个查找表 Status copy(SSTable L,SSTable &L1){ //L1分配空间,L的关键字复制到L1的关键字中 L1.elem=(Elemtype *)malloc(100*sizeof(Elemtype)); L1.length=L.length; L.listsize=100; for(int i=1;i<=L1.length;i++){ L1.elem[i].key=L.elem[i].key; } }//复制 int search(SSTable L,keyType key){ int i; L.elem[0].key=key; for(i=L.length;L.elem[i].key!=key;i--); return i; }//顺序查找 void Insert(SSTable &L){ int i,j; for(i=2;i<=L.length;i++) if(L.elem[i].key 三、运行结果



