数据结构实验(二叉排序树)

  • 格式:doc
  • 大小:225.00 KB
  • 文档页数:6

基础成绩:85分《数据结构》课程实验
实验报告
题目:基于二叉排序树的商品信息查询算法的设计与实现
专业:软件工程
班级:软件工程102
姓名:郭向华
学号:102432
完成日期: 2012/6/10
一、试验内容
查找是数据处理的重要操作。

请设计并实现基于二叉排序树的商品信息查询算法。

完成信息的查询、插入、删除、查询频度的统计等功能。

二、试验目的
熟练掌握顺序查找、折半查找及二叉排序树、平衡二叉树上的查找、插入和删除的方法。

三、流程图
四、源程序代码
#include<stdlib.h>
#include<iostream.h>
#include<string.h>
#include"BiTree.h"
BiTree* CreatBiTree(KeyType key)
{
BiTree *BT;
BT=(BiTree*)malloc(sizeof(BiTree));
BT->lchild=BT->rchild=NULL;
BT->data=key;
cout<<BT-><<endl;
return BT;
}
int SearchBiTree(BiTree *BT,char *key)
{
if(BT==NULL)
{
cout<<"没有找到节点"<<endl;
return 0;
}
if(strcmp(BT->,key)==0)
{
BT->data.record++;
cout<<BT-><<" "<<BT->data.record<<endl;
cout<<"找到节点"<<endl;
return 1;
}
if(strcmp(key,BT->)<0)
{
return(SearchBiTree(BT->lchild,key));
}
if (strcmp(key,BT->)>0)
return(SearchBiTree(BT->rchild,key));
}
BiTree* InsertBiTree(BiTree *BT,char *key)
{
if(SearchBiTree(BT,key)==0)
{
if((strcmp(key,BT->)<0)&&(BT->lchild==NULL))
{
BiTree *p;
p=(BiTree*)malloc(sizeof(BiTree)); //注意,指针都要给初值的么
p->lchild=p->rchild=NULL;
p->data.record=0;
strcpy(p->,key);
BT->lchild=p;
cout<<"插入左边"<<endl;
return p;
}
if((strcmp(key,BT->)>0)&&(BT->rchild==NULL))
{
BiTree *p;
p=(BiTree*)malloc(sizeof(BiTree)); //注意,指针都要给初值
p->lchild=p->rchild=NULL;
p->data.record=0;
strcpy(p->,key);
BT->rchild=p;
cout<<"插入右边"<<endl;
return p;
}
if((strcmp(key,BT->)<0)&&(BT->lchild!=NULL))
InsertBiTree(BT->lchild,key);
if((strcmp(key,BT->)>0)&&(BT->rchild!=NULL))
InsertBiTree(BT->rchild,key);
}
else
return BT;
}
void main()
{
int i;
BiTree *BT;
KeyType KeyTree;
KeyTree.record=0;
cout<<"输入你要查找的物品"<<endl;
cin>>>>KeyTree.key;
BT=CreatBiTree(KeyTree);
cout<<"输入exit时退出查找"<<endl;
for(i=0;;i++)
{
cout<<"输入你要查找的物品"<<endl;
KeyTree.record=0;
cin>>;
cin>>KeyTree.key;
if(strcmp(&[0],"exit")==0)
break;
if(SearchBiTree(BT,&[0])==0)
{
BT=InsertBiTree(BT,&[0]);
}
}
}
五、调试过程
应该划分模块,对不同的操作应用不同的函数来完成。

在调试过程中,关于平衡二叉树的那部分比较难,没能实现文件的储存和读取功能。

六、结果分析。