有序表查找实验报告doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有序表查找实验报告
篇一:《数据结构》实验报告查找
实验四——查找
一、实验目的
1. 掌握顺序表的查找方法,尤其是折半查找方法;
2. 掌握二叉排序树的查找算法。
二、实验内容
1.
2.
3.
4. 建立一个顺序表,用顺序查找的方法对其实施查找;建立一个有序表,用折半查找的方法对其实施查找;建立一个二叉排序树,根据给定值对其实施查找;对同一组数据,试用三种方法查找某一相同数据,并尝试进行性能分析。
三、实验预习内容
实验一包括的函数有:typedef struct ,创建函数void create(seqlist & L),输出函数void print(seqlist L),顺序查找int find(seqlist L,int number),折半查找int halffind(seqlist L,int number) 主函数main().
实验二包括的函数有:结构体typedef struct,插入函数void insert(bnode * & T,bnode * S),void insert1(bnode * & T),创建函数void create(bnode * & T),
查找函数bnode * search(bnode * T,int number),主函数main().
四、上机实验
实验一:
1. 实验源程序。
#include
#define N 80
typedef struct
{
int number; //关键字
char name[5];
char sex[2];
int age;
}record;
typedef struct
{
record stu[N];
int num;//记录人数
}seqlist;
//建顺序表
void create(seqlist & L)
{
int i;
L.num=0;
cout cout cin>>L.stu[1].number;
for(i=1;L.stu[i].number!=0;)
{
cin>>L.stu[i].name>>L.stu[i].sex>>L.stu[i].age; L.num++;
cout cin>>L.stu[++i].number;
}
}
//输出学生信息
void print(seqlist L)
{
int i;
cout for(i=1;i cout }
//顺序查找
int find(seqlist L,int number)
{
int i;
for(i=L.num;i>=0;i--)
if(L.stu[i].number==number)
return i;
}
//折半查找
int halffind(seqlist L,int number) {
int high=L.num,low=1,mid;
for(;low {
mid=(high+low)/2;
if(number==L.stu[mid].number) return mid;
else
if(number high=mid-1;
else
low=mid+1;
}
return 0;
}
void main()
{
int i,number;
seqlist L;
create(L);
print(L);
cout cout cin>>number;
if((i=halffind(L,number))!=0)
cout else
cout cout cout cin>>number; if((i=find(L,number))!=0)
cout else
cout }
实验二:
#include
typedef struct
{
int number; //关键字
char name[5];
char sex[2];
int age;
}record;
typedef struct node
{
record inf;
struct node *lchild,*rchild;
}bnode;
void insert(bnode * & T,bnode * S)
{
if(!T)
T=S;
else
if(S->inf.numberinf.number)
insert(T->lchild,S);
else
insert(T->rchild,S);
}
void insert1(bnode * & T)
{
int flag=1; int number; bnode * u; char ctinue; for(;flag==1;)
{
cout cout cin>>number;
while(number)
{
u=new bnode;
u->inf.number=number;
cin>>u->>>u->inf.sex>>u->inf.age;
u->lchild=u->rchild=NULL;
insert(T,u);