数据结构-查找
数据结构实验内容:
(1)随机产生n个互不相同的两位整数,构造一个查找表。
(2)输入一个整数,利用顺序查找法在查找表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。
(3)对查找表按递增顺序进行排序。
(4)输入一个整数,利用折半查找法在有序表中查找该整数是否存在。若查找成功,返回该整数在表中的位置;查找失败则返回0。
`#include<stdio.h>
#include<bits/stdc++.h>
#define max 10
using namespace std;
typedef struct{
int elem[max+1];
int length;
}SSTable;
int Seach_Seq(SSTable st,int key){
int i;
st.elem[0]=key;
i=st.length;
while(st.elem[i]!=key)
i–;
return i;
}
int search_bin(SSTable st,int key){
int mid,low=1,high=st.length;
while(low<=high){
mid=(low+high)/2;
if(key==st.elem[mid])
return mid;
else if(st.elem[mid]<key)
low=mid+1;
else
high=mid-1;
}
}
int main()
{
int i,key;
SSTable st;
scanf("%d",&st.length);
for(i=1;i<=st.length;i++)
st.elem[i]=rand()%90+10;
for(i=1;i<=st.length;i++)
printf("%d “,st.elem[i]);
printf(”\n");
printf(“输入要查找的数:\n”);
scanf("%d",&key);
printf(“顺序查找的该数的位置为:%d(返回0为查找失败)\n”,Seach_Seq(st,key));
sort(st.elem,st.elem+st.length);
printf(“递增排序结果:\n”);
for(i=1;i<=st.length;i++)
printf("%d “,st.elem[i]);
printf(”\n");
printf(“折半查找的该数位置为:%d(返回0为查找失败)\n”,search_bin(st,key));
}
`