




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机系数据结构实验报告(5)实验目的:树是数据结构中应用极为广泛的非线性结构,本单元的实验达到熟悉二叉树的存储结构的特性,以及如何应用树结构解决具体问题。问题描述:首先,掌握二叉树的各种存储结构和熟悉对二叉树的基本操作。其次,以二叉树表示算术表达式的基础上,设计一个十进制的四则运算的计算器。-+/a*b-efCd如算术表达式:a+b*(c-d)-e/f实验要求:文法是一个四元1、 如果利用完全二叉树的性质和二叉链表结构建立一棵二叉树,分别计算a) 统计叶子结点的个数。b) 求二叉树的深度。2、 十进制的四则运算的计算器可以接收用户来自键盘的输入。3、 由输入的表达式字符串动态生成算术表达式所对应的二叉树。4、 自动完成求值运算和输出结果。算法分析: 用二叉树表示表达式,可以按先序次序输入表达式,为了实现四则运算,输入后按书面格式输出原式,再进行运算,最后输出结果。另外,构造两个函数Leaf()和Height()来完成叶子节点和深度的计算。这是流程。 先序输入构造二叉树采用最常用的递归调用,Leaf()和Height()的原理很简单,构造起来不难,主要的问题是字符输入与节点数据会有小数的矛盾和二叉树表示的表达式的运算的规则。 其中注意到,四则运算的数据可能是小数,所以为了与之匹配,节点数据采用浮点型,先把字符输入的数据进行相应的处理,存入一个数组中,再在构造二叉树的时候,从数组中获得数据。运算时则通过判断叶子节点与非叶子节点,进行浮点型与字符型的转换,再按四则运算法则求解,同样需要利用递归调用。实验内容和过程:源程序:#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 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();reread(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 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 /: 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输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州六盘水市参加第十三届贵州人才博览会事业单位人才引进261人模拟试卷附答案详解(黄金题型)
- 2025黑龙江哈尔滨工程大学哈军工纪念馆宣讲员招聘1人考前自测高频考点模拟试题及答案详解(全优)
- 反垄断法实施效果评估-洞察与解读
- 2025春季中国太平实习生招聘考前自测高频考点模拟试题及参考答案详解一套
- 2025广东惠州市博罗县东部自来水有限公司招聘及考前自测高频考点模拟试题附答案详解
- 2025湖南娄底市纪委监委、市委巡察办所属事业单位公开选调、公开招聘工作人员9人模拟试卷及答案详解1套
- 2025江苏镇江市卫生健康委员会所属镇江市第一人民医院招聘工作人员50人模拟试卷及答案详解(历年真题)
- 2025年春季江苏凤凰新华书店集团有限公司市县分公司招聘考前自测高频考点模拟试题附答案详解(模拟题)
- 2025广西百色西林县生态移民发展中心公开招聘3人考前自测高频考点模拟试题及答案详解(夺冠)
- 2025年春季中国邮政储蓄银行湖南省分行校园招聘模拟试卷及答案详解(网校专用)
- 型钢混凝土结构钢筋施工
- 石群邱关源电路(第1至7单元)白底课件
- JJF 1338-2012相控阵超声探伤仪校准规范
- GB/T 40529-2021船舶与海洋技术起货绞车
- GB 31603-2015食品安全国家标准食品接触材料及制品生产通用卫生规范
- 关于公布2016年度中国电力优质工程奖评审结果的通知
- 港口集团绩效考核方案
- 送达地址确认书(诉讼类范本)
- 2023版北京协和医院重症医学科诊疗常规
- 三坐标测量基础知识(基础教育)
- 宜家战略分析(课堂PPT)
评论
0/150
提交评论