数据结构实验五 查找的实现.docx
《数据结构实验五 查找的实现.docx》由会员分享,可在线阅读,更多相关《数据结构实验五 查找的实现.docx(7页珍藏版)》请在冰豆网上搜索。
![数据结构实验五 查找的实现.docx](https://file1.bdocx.com/fileroot1/2022-11/24/cba984c8-04c8-4abf-802b-1dbacab15ce7/cba984c8-04c8-4abf-802b-1dbacab15ce71.gif)
数据结构实验五查找的实现
实验五查找的实现
一、实验内容
1、建立一个线性表,对表中数据元素存放的先后次序没有任何要求。
输入待查数据元素的关键字进行查找。
为了简化算法,数据元素只含一个整型关键字字段,数据元素的其余数据部分忽略不考虑。
建议采用前哨的作用,以提高查找效率。
2、查找表的存储结构为有序表,输入待查数据元素的关键字利用折半查找方法进行查找。
此程序中要求对整型量关键字数据的输入按从小到大排序输入。
2、源代码和执行结果
1、
#include
usingnamespacestd;
#defineMAX100
#defineKeyTypeint
typedefstruct
{
KeyTypekey;
}DataType;
typedefstruct
{
DataTypeelem[MAX];
intlength;
}SeqTable,*PSeqTable;
PSeqTableInit_SeqTable()
{
PSeqTablep=(PSeqTable)malloc(sizeof(SeqTable));
if(p!
=NULL)
{
p->length=0;
returnp;
}
else
{
cout<<"Outofspace!
"<returnNULL;
}
}
intinsert_SeqTable(PSeqTablep,KeyTypex)
{
if(p->length>=MAX)
{
cout<<"overflow!
"<return0;
}
p->elem[p->length].key=x;
p->length++;
return1;
}
intSeqSearch(SeqTables,KeyTypek)
{
intn,i=0;
n=s.length;
s.elem[n].key=k;
while(s.elem[i].key!
=k)
i++;
if(i==n)
return-1;
else
returni;
}
voidmain()
{
PSeqTablep;
inti,n;
KeyTypea;
p=Init_SeqTable();
cout<<"请输入数据个数:
";
cin>>n;
cout<<"请输入数据:
"<for(i=0;i{
cin>>a;
insert_SeqTable(p,a);
}
cout<<"请输入要查找的数据,输入32767结束:
";
cin>>a;
while(a!
=32767)
{
i=SeqSearch(*p,a);
if(i==-1)
{
cout<<"无此数据!
请重新输入:
"<cin>>a;
}
else
{
cout<<"该数据的位置是:
"<
cout<<"请输入要查找的数据:
";
cin>>a;
}
}
}
2、
#include
usingnamespacestd;
#defineMAX100
#defineKeyTypeint
typedefstruct
{
KeyTypekey;
}DataType;
typedefstruct
{
DataTypeelem[MAX];
intlength;
}BinTable,*PBinTable;
PBinTableInit_BinTable()
{
PBinTablep=(PBinTable)malloc(sizeof(BinTable));
if(p!
=NULL)
{
p->length=0;
returnp;
}
else
{
cout<<"Outofspace!
"<returnNULL;
}
}
intinsert_BinTable(PBinTablep,KeyTypex)
{
if(p->length>=MAX)
{
cout<<"overflow!
"<return0;
}
p->elem[p->length].key=x;
p->length++;
return1;
}
intBinSearch(BinTables,KeyTypek)
{
intlow,mid,high;
low=0;
high=s.length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s.elem[mid].key==k)
returnmid;
elseif(s.elem[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return-1;
}
voidmain()
{
PBinTablep;
inti,n;
KeyTypea;
p=Init_BinTable();
cout<<"请输入数据个数:
";
cin>>n;
cout<<"请按从小到大的顺序输入数据:
"<for(i=0;i{
cin>>a;
insert_BinTable(p,a);
}
cout<<"请输入要查找的数据,输入32767结束:
";
cin>>a;
while(a!
=32767)
{
i=BinSearch(*p,a);
if(i==-1)
{
cout<<"无此数据!
请重新输入:
"<cin>>a;
}
else
{
cout<<"该数据的位置是:
"<
cout<<"请输入要查找的数据:
";
cin>>a;
}
}
}
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!