通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 2017年考研408计算机统考真题在线评测(附答案) 中有题目如下:
第1题
请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法的输入时,输出的等价中缀表达式分别为(a+b) * (c * (-d)和(a * b)+(-(c-d))。
二叉树结点定义如下:
typedef struct node{ char data[10]; //存储操作数或操作符 struct node *left, *right; }BTree;
请回答下列问题。
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++语言描述算法,关键之处给出注释。
答:
(1)算法的基本设计思想
表达式树的中序序列加上必要的括号即为等价的中缀表达式。可以基于二叉树的中序遍历策略得到所需的表达式。(3分)
表达式树中分支结点所对应的子表达式的计算次序,由该分支结点所处的位置决定。为得到正确的中缀表达式,需要在生成遍历序列的同时,在适当位置增加必要的括号。显然,表达式的最外层(对应根结点)及操作数(对应叶结点)不需要添加括号。
(2)算法实现(10分)
void BtreeToE(BTree *root) { BtreeToExp(root,1); //根的高度为1 } void BtreeToExp(BTree *root, int deep) { if(root == NULL) return; else if(root->left == NULL && root->right == NULL)//若为叶结点 printf("%s",root->data);//输出操作数 else { if(deep>1) printf("(");//若有子表达式则加1层括号 BtreeToExp(root->left,deep+1); printf("%s",root->data); //输出操作符 BtreeToExp(root->right,deep+1); if(deep>1) printf(")");//若有子表达式则加1层括号 } }
所属试卷:2017年考研408计算机统考真题在线评测(附答案)
已知函数func的原型为int func(int,in
下列关于成员函数特征的描述中,错误的是。
有如下程序,编译运行程序将出现的情况是。
在switch(expression)语句中,expr
输入一段中文文本,不含标点符号和空格,保存为变量 s,
下列函数说明正确的是。
请编写一个函数fun,它的功能是:求出一个2×M整型二
下列给定程序的功能是调用fun函数建立班级通信录。通信
有以下程序:以上程序执行后abc.dat文件的内容是
有以下程序:程序运行后的输出结果是( )。
请在下面程序的横线处填上适当内容,以使程序完整,并使程
请在下面程序的横线处填上适当字句,以使程序完整,并使程
同一个列表对象中所有元素必须为相同类型。
关于return说法正确的是。
哪个函数可以同时作用于数字类型和字符串类型。
仅使用pythom基本语法,即不使用任何模块,编写py
表达式 5 if 5>6 else (6 if 3>2
为了建立如图所示的存储结构(即每个结点两个域,data
有以下程序程序运行后的输出结果是( )。
要强制杀死某个进程用什么命令
某文件的权限为:drw-r--r--,用数值形式表示该
在Linux与中断相关的三个核心数据结构中,用做抽象的
在学生(学号,姓名,年龄,性别,院系)关系中,表示检索
排序算法中的比较次数与初始元素序列的排列无关。
下列是关于多重中断系统中 CPU 响应中断的叙述,其中
什么是软件危机?为什么会产生软件危机?[答案解析]软件
while循环的循环体至少执行一次,而不论while表
执行语句char str[81]="abcdef";后
有以下程序
输入: CBBADADA输出: ______
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2