#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; }
【数据结构作业六a】建立一个顺序表,用顺序查找、折半查找的方法对其实施查找
猜你喜欢
转载自blog.csdn.net/tf1997/article/details/78660009
今日推荐
周排行