有序表二分查找法和二叉排序树的查找
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆交通大学综合性设计性实验报告
班级:
实验项目名称:
实验项目性质:
实验所属课程:
实验室(中心):
指导教师:
实验完成时间:年月日
一、实验目的
应用线性结构、树形结构实现查找。
二、实验内容及要求
实验内容:
1)有序表的二分查找
2)二叉排序树的查找
实验要求
1)建立有序表,然后进行二分查找2)建立二叉排序树,然后查找
三、实验设备及软件
Win7操作系统
Microsoft Visual Studio 2010
四、设计方案
㈠题目(老师给定或学生自定)
有序表的二分查找和二叉排序树的查找
㈡设计的主要思路
有序表的二分查找:
定义模板类:COderTable,其中的bool Find(T &element,int &i)函数采用二分查找法实现对数据的查找。
㈢主要功能
1)、建立有序表,然后进行二分查找
2)、建立二叉排序树,然后查找
五、主要代码
有序表的二分查找:
声明并定义COderTable类:
#define CODERTABLE
template
class COderTable
{
private:
T Element[100];
int Maxnumber;
public:
COderTable();//构造函数
~COderTable();//析构函数
bool Initial();//初始化数组
bool Find(T &element,int &i);//查找元素element,如果查找成功,则返回查找点的位置i,反之,i=-1
};
实现查找的函数:
template
bool COderTable
int low=0,height=99,mid=(height+low)/2; while(low<=height)
{
if(Element[mid]==element)
{
i=mid+1;
return true;
}
if(Element[mid] low=mid+1; if(Element[mid]>element) height=mid-1; mid=(low+height)/2; } return false; } 二叉排序树的查找: 声明并定义相关类: #define CELEMENT template class CElement { private: T Element; public: CElement *LeftSon; CElement *RightSon; public: CElement();//构造函数 ~CElement();//析构函数 void Set_Element(T ele);//设置值 T Get_Element();//取值 bool operator >(CElement &celement);//重载> bool operator ==(CElement &celement);//重载== bool operator !=(CElement &celement);//重载!= }; #define CTREE template class CTree { private: CElement private: int Get_Number(CElement int Get_Depth(CElement int Get_Leaf(CElement CElement CElement CElement CElement int DepthOfElement(CElement void InorderTraversal(CElement void PreorderTraversal(CElement void PostorderTraversal(CElement void Clear(CElement void InSert(CElement public: CTree(); ~CTree();