【数据结构作业六a】建立一个顺序表,用顺序查找、折半查找的方法对其实施查找

#include <iostream>
using namespace std;
#define MAXSIZE 50
typedef int KeyType;
typedef struct{
	KeyType key;
}ElemType;
typedef struct{
	ElemType *R;
	int length;
}SSTable;
bool CreateList(SSTable &L)
{ int i;
  L.R=new ElemType[MAXSIZE+1]; //分配空间
  if (!L.R)  return false;   
  cout<<"请输入线性表的长度,不能大于"<<MAXSIZE<<':'; cin>>L.length;
  cout<<"请输入表中元素:";
  for(i=1;i<=L.length;i++)
     cin>>L.R[i].key;   
}
void print(SSTable L)
{ int i;
  for(i=1;i<=L.length;i++)
     if (i==1)  cout<<'('<<L.R[i].key;  
     else cout<<','<<L.R[i].key;
  cout<<')'<<endl;
}
int Search_Seq(SSTable S,KeyType key){//顺序查找 
	int i; 
	S.R[0].key=key;
	for(i=S.length;S.R[i].key!=key;--i);
	return i;
}
int Search_Bin(SSTable S,KeyType key){//折半查找(表需有序) 
	int low,high,mid;
	low=1;high=S.length;
	while(low<=high){
	mid=(low+high)/2;
	if(key==S.R[mid].key)
	  return mid;
	else if(key<S.R[mid].key)
	  high=mid-1;
	else 
	  low=mid+1;
    }
    return 0;
}
int main(){
	int m,n,x;
	SSTable S;
	CreateList(S); 
	while(x){
	cout<<"请输入要查找的元素:\n"; 
	cin>>m;
	cout<<"------请选择查找方式------\n" ;
	cout<<"----折半查找,表需有序----\n" ;
	cout<<"------[1]顺序查找---------\n" ;
	cout<<"------[2]折半查找---------\n" ;
	cout<<"------[0]退出-------------\n" ;
	cin>>x;
    switch(x)
       { case 1:n=Search_Seq(S,m);cout<<"元素位置为:"<<n<<endl; break;
         case 2:n=Search_Bin(S,m);cout<<"元素位置为:"<<n<<endl; break;

         case 0:break;
         default:cout<<"你的选择有错,请重新选择!" ; 
	   }
	cout<<"是否继续查找元素?\n";
	cout<<"是[1]\n";
	cout<<"否[0]\n"; 
	cin>>x;  
    }
		  
    return 0;
} 

猜你喜欢

转载自blog.csdn.net/tf1997/article/details/78660009
今日推荐