天津大学2013年901试卷
一实做题(50分)
1(10分)请给出中缀表达式转换成后缀表达式的过程中栈的变化过程。(用一个栈来模拟表达式的转换过程)中缀表达式为:E=((100-4)/3+3*(36-7))*2。
2(10分)高度为h的满K叉树有如下特征:从h层上的节点度为0,其余各层上的节点的度为K。如果按从上到下,从左子树到右子树的次序对树中节点从1开始编号,则:1)各层的节点数是多少?
2)编号为i的双亲节点(若存在)的编号是多少?
3)编号为i的节点的第m个孩子节点(若存在)的编号是多少?
3(10分)从空数开始,使用关键字:a,g,f,b,k,d,h,m,j,e,c,i,r,x建立四阶B-树。
4(10分)设某项工程由下图所示的工序组成。若各工序以流水方式进行(即串进行)。其中:图中的紧前工序是指,没有工序A和B,工序B必须在工序A完成之后才能开始。则工序A称为工序B的紧前工序。请完成题目:
2)给出该工程的全部合理的工作流程
5(10分)有一组关键{14,15,30,28,5,10},给出构造出事小顶堆的过程图示,再根据初始小顶堆给出排序过程的图示。
二算法设计题(25分)
1(10分)一个用邻接矩阵存储的有向图,请用栈来实现该图的深度优先搜索算法。
2(15分)一个人从某年某月某日开始,三天打渔,两天晒网。写一个程序,计算他在以后的某年某月某日,是打渔,还是晒网。起始和终止日期从键盘输入。(假设计算从2000年1月开始到2012年11月18日结束)
三程序填空(共20分,每空2分)
1下面程序使用递归实现汉诺塔游戏
#include
Using namespace std;
Void moveDisks(int n,char fromTower,char toTower,char auxTower)
{
If(n==1)
Cout<
Else
{
moveDisks( (3) );
Cout<
moveDisks( (6) );
}
}