数据结构实验五-二叉树及其应用

上传人:文**** 文档编号:60833922 上传时间:2022-03-09 格式:DOC 页数:5 大小:93.50KB
收藏 版权申诉 举报 下载
数据结构实验五-二叉树及其应用_第1页
第1页 / 共5页
数据结构实验五-二叉树及其应用_第2页
第2页 / 共5页
数据结构实验五-二叉树及其应用_第3页
第3页 / 共5页
资源描述:

《数据结构实验五-二叉树及其应用》由会员分享,可在线阅读,更多相关《数据结构实验五-二叉树及其应用(5页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上计算机系数据结构实验报告(5)实验目的:树是数据结构中应用极为广泛的非线性结构,本单元的实验达到熟悉二叉树的存储结构的特性,以及如何应用树结构解决具体问题。问题描述:首先,掌握二叉树的各种存储结构和熟悉对二叉树的基本操作。其次,以二叉树表示算术表达式的基础上,设计一个十进制的四则运算的计算器。-+/a*b-efCd如算术表达式:a+b*(c-d)-e/f实验要求:文法是一个四元1、 如果利用完全二叉树的性质和二叉链表结构建立一棵二叉树,分别计算a) 统计叶子结点的个数。b) 求二叉树的深度。2、 十进制的四则运算的计算器可以接收用户来自键盘的输入。3、 由输入的表达式

2、字符串动态生成算术表达式所对应的二叉树。4、 自动完成求值运算和输出结果。算法分析: 用二叉树表示表达式,可以按先序次序输入表达式,为了实现四则运算,输入后按书面格式输出原式,再进行运算,最后输出结果。另外,构造两个函数Leaf()和Height()来完成叶子节点和深度的计算。这是流程。 先序输入构造二叉树采用最常用的递归调用,Leaf()和Height()的原理很简单,构造起来不难,主要的问题是字符输入与节点数据会有小数的矛盾和二叉树表示的表达式的运算的规则。 其中注意到,四则运算的数据可能是小数,所以为了与之匹配,节点数据采用浮点型,先把字符输入的数据进行相应的处理,存入一个数组中,再在构

3、造二叉树的时候,从数组中获得数据。运算时则通过判断叶子节点与非叶子节点,进行浮点型与字符型的转换,再按四则运算法则求解,同样需要利用递归调用。实验内容和过程:源程序:#include#includeusing namespace std;static float node100;int i=0;/-二叉树的二叉链表存储表示-typedef float TElemType;typedef struct BiTNodeTElemType data;struct BiTNode *lchild,*rchild;BiTNode,*BiTree;int dataprocess()char ch;int

4、j=1;float m;int flag=0;ch=getchar();while(ch!=$)if(!(ch=0&ch=0&ch=0&ch=0&chdata=nodei; PreCreateBiTree(T-lchild);PreCreateBiTree(T-rchild);return 1;int output(BiTree T)char ch;if(!T-lchild&!T-rchild)coutdata;elsech=(char)T-data;coutdata=42|T-data=47)&(T-lchild-data=43|T-lchild-data=45)printf();rerea

5、d(T-lchild);printf();elsereread(T-lchild);output(T);if(T-data=42|T-data=47)&(T-rchild-data=43|T-rchild-data=45)printf();reread(T-rchild);printf();elsereread(T-rchild);return 1;int Leaf(BiTree T)int p,q;if(!T) return 0;if(!T-lchild&!T-rchild) return 1;p=Leaf(T-lchild);q=Leaf(T-rchild);return p+q;int

6、Height(BiTree T)int r,s;if(!T) return 0;r=Height(T-lchild);s=Height(T-rchild);return 1+(rs?r:s);float result(BiTree T)float u,v;char c;if(!T-lchild&!T-rchild)return T-data;u=result(T-lchild);v=result(T-rchild);c=(char)T-data;switch(c) case +: return u+v; case -: return u-v;case *: return u*v;case /:

7、 return u/(v+0.0);return 0;int main()BiTree T;cout按先序次序输入二叉树(必须以$结束):endl;dataprocess();PreCreateBiTree(T);cout输入的表达式为:endl;reread(T);coutendl; cout深度:; coutHeight(T)endl;cout叶子节点:; coutLeaf(T)endl;cout结果:; coutresult(T)endl;实验结果:输入数据:(1+2)*3+(5+6*7);正确输出:56输入数据:2.2*(3.1+1.20)-7.5/3正确结果:6.96总结和感想: 实验的难点在于对二叉树各种操作的应用,只有充分借鉴书中所学再结合递归算法的巧妙,同时还要有以往程序设计的经验,程序才能完成。专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!