- 线性表的顺序查找
1、定义查找表的顺序存储结构
2、定义创建函数(CreateSTable),实现查找表数据元素的输入
3、定义包含有监视哨的顺序查找函数(Search_Seq)
4、在主函数中调用CreateSTable函数和Search_Seq函数,实现顺序查找功能。
例如:
输入查找表的表长和数据如下:
5
5 3 8 7 9
输入待查记录的关键字:
8
程序输出计算的位置为:
3
#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
#define MaxInt 32767 //表示极大值,即∞
#define MVNum 100 //最大顶点数
typedef struct{
int key;
int other;
}ElemType;
typedef struct{
ElemType *R;
int length;
}SSTable;
void CreateTable(SSTable &ST,int n){
ST.R=new ElemType[n+1];
for(int i=1;i<=n;i++){
cin>>ST.R[i].key;
ST.length++;
}
}
//在顺序表ST中顺序查找其关键字等于 key的数据元素,
//若找到,则函数值为该元素在表中的位置,否则为零
int Search_Seq(SSTable ST,int key){
ST.R[0].key=key;//哨兵
int i;
for(i=ST.length;ST.R[i].key!=key;--i);
return i;
// while(i>=1&&ST.R[i].key!=key){
// i--;
// }
// if(i>=1) return i;
// else return 0;
}
//折半查找
int low,high;
int Search_Bin(SSTable ST,int key){
low=1;high=ST.length;
}
int main(){
SSTable ST;
int key;
int n;
cout<<"输入查找表的表长和数据如下:"<<endl;
cin>>n;
CreateTable(ST,n);
cout<<"输入待查记录的关键字:"<<endl;
cin>>key;
cout<<"程序输出计算的位置为:"<<Search_Seq(ST,key)<<endl;
}