静态查找表-C基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*
静态查找表(顺序结构)
实现
Create(&ST,n)构造含有n个元素的静态查找表ST Destroy(&ST)销毁表
Search(ST,key)返回表中位置,若无,返回空
Traverse(ST,Visit())遍历-->函数作为参数暂时不会
*/
#include
#include
#include
typedef int elemtype;
typedef struct {
elemtype *elem;
int length;
}stable;
void Create(stable *ST,int n){
int i;
ST->elem=(elemtype *)malloc((n+1)*sizeof(elemtype));
if(!ST->elem){
printf("\n分配空间失败\n");
exit(1);
}
ST->length=n;
printf("\n请输入%d个数据:",n);
for(i=1;i<=n;i++){
scanf("%d",&ST->elem[i]);
}
}
int Search(stable *ST,elemtype key){ //顺序查找法int i;
ST->elem[0]=key; //哨岗
for(i=ST->length;ST->elem[i]!=key;i--);
return i;
}
void Traverse(stable *ST){
int i;
printf("\n静态查找表中的元素为:");
for(i=1;i<=ST->length;i++){
printf("%d ",ST->elem[i]);
}
printf("\n\n");
}
void Destroy(stable *ST){
free(ST->elem);
ST->elem=NULL;
ST->length=0;
}
void main(){
stable ST;
int n;
elemtype key;
printf("\n请输入元素个数:");
scanf("%d",&n);
Create(&ST,n);
printf("\n请输入要查找的数:");
scanf("%d",&key);
printf("\n要找的元素在第%d位\n",Search(&ST,key));
Traverse(&ST);
Destroy(&ST);
}