问答题[问题1]
经过进一步分析,设计人员决定定义一个类Items on loan,以表示类Book和CD的共有属性和方法。请采用图1-2中属性和方法的名称给出类Items_on_loan应该具有的属性和方法(注意:不同名称的属性和方法表示不同的含义,如CD中的composer与 Book甲的author无任何关系)。
问答题【说明】本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类Node描述,而链表由类List描述。类List的成员函数有以下几个。 ①createList():创建从小到大的有序链表。 ②multiplyList(List L1,List L2):将链表L1和链表L2合并。 ③print();打印链表。 # include <iostream.h>class List;class Node friend class List; public: Node(int data) (1) ; private: int data; Node *next; ;class List public: List( ) list = NULL; void multiplyList(List L1, List L2); void createList( ); void print( ); private: Node *list;;void List::createList( ) Node *p, *u, *pm; int data; list = NULL; while (1) cout<<"输入链表的一项: (小于零,结束链表)"<<end1; cin >> data; if(data<0)break; //小于零,结束输入 p = list; while (p != NULL p = p->next; u= (2) : if(p==list) list = u; else pre->next = u; (3) :void List::multiplyList (List L1, List L2) Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.1ist; while (pL1 != NULL pL1 = pL1 ->next; else u = new Node (pL2->data)); pL2 = pL2->next; if (list==NULL) list= (4) ; else pL->next = u; pL =u; pL1 = (pL1 != NULL) ? pL1:pL2; while (pL1 != NULL) u = (5) ; pL1 = pL1->next; if (list==NULL) list=pL=u; else pL->next = u; pL = u; void List::print( ) Node *p; p = list; while (p != NULL) cout << p->data << "/t"; p = p->next; cout << end1;void main ( ) List L1, L2, L; cout << "创建第一个链表/n"; L1.createList ( ); cout << "创建第二个链表/n"; L2.createList ( ); L1.print ( ); L2.print ( ); L.multiplyList (L1, L2); L.print ( );
问答题[Java程序7-21]
import java.u61.*;
public class SalesSystem {
private ProductList catalog;
private OrderList sales;
private static PrintWriter stdOut = new PrintWriter(System.out, true);
public void statistic() {
for (Product product: {{U}}(3) {{/U}}) {
iht number = 0;
for (Order order: {{U}}(4) {{/U}}) {
for ( {{U}}(5) {{/U}}: order) {
if (produet.equals(item.getProduct()))
number += item. getQuantity();
}
}
stdOut.println(product .getCode() +" "
+ product.getDescription() +" "
+ number +" "+ number * product.getPrice());
}
}
//其余的方法末列出
}
问答题阅读下列说明和数据流图,回答问题1至问题3,[说明]考务处理系统具有如下功能:(1)对考生送来的报名单进行检查。(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷。(3)对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者。(4)制作考生通知单送给考生。(5)进行成绩分类统计(按地区、年龄、文化程度、职业、考试级别等分类)和试题难度分析,产生统计分析表。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶层数据流图是正确的。图1-1是顶层数据流图,图1-2是第0层数据流图,图1-3是第l层数据流图,其中(A)是加工1的子图,(B)是加工2的子图。[图1-1][图1-2][图1-3][数据字典]报名单=地区+序号+姓名+性别+年龄+文化程度+职业+考试级别+通信地址正式报名单=报名单+准考证号准考证=地区+序号+姓名+准考证号+考试级别考生名单=准考证号+考试级别统计分析表=分类统计表+难度分析表考生通知单=考试级别+准考证号+姓名+合格标志+通信地址
问答题[函数5-1]
bool SearchBtree(BTreeNode* root, ElemKeyType akey, BTreeNode **ptr)
{
int lw, hi, mid;
BTreeNode*p = root;
*ptr = NULL;
while ( p ) {
1w = 1; hi={{U}} (1) {{/U}};
while (1w <= hi) {
mid = (1w + hi)/2;
if (p -> K[mid] == akey) {
*ptr = p;
return TRUE;
}
else
if ({{U}} (2) {{/U}})
hi=mid - 1;
else
1w = mid + 1;
}
*ptr = p;
p ={{U}} (3) {{/U}};
}
return FALSE;
}
问答题问题:3.3 (5分)
根据说明中的描述,使用说明中的术语,给出图3-3中C1~C5所对应的类名。
问答题[说明] 某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者的信息,从而快速地提供租赁服务。该系统具有以下功能: 1.登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话,并将这些信息写入房主信息文件。 2.登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号)。除此之外,还需登记该房屋的地址、房型(如平房、带阳台的楼房、独立式住宅等)、最多能够容纳的房客数、租金及房屋状况(待租赁、已出租)。这些信息都保存在房屋信息文件中。一名房主可以在系统中登记多个待租赁的房屋。 3.登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须首先在系统中登记个人信息,包括:姓名、住址、电话号码、出生年月和性别。这些信息都保存在租赁者信息文件中。 4.租赁房屋。已经登记在系统中的租赁者,可以得到一份系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋,就可以提出看房请求。系统会安排租赁者与房主见面。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。 5.收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单缴纳相应的费用。 : 6.变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。 数据流图1-1和图1-2分别给出了该系统的顶层数据流图和0层数据流图。
问答题[说明]散列文件的存储单位称为桶(Bucket)。假如一个桶能存放m个记录,当桶中已有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回;否则沿指针到溢出桶中进行查找。例如,设散列函数为Hash(Key)=Keymod7,记录的关键字序列为15,14,21,87,96,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如下图所示。为简化起见,散列文件的存储单位以内存单元表示。函数InsertToHashTable(intNewElemKey)的功能是:若新元素NewElemKey正确插入散列文件中,则返回值1;否则返回值0。采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P设定基桶数目。函数中使用的预定义符号如下:#defineNULLKEY-1/*散列桶的空闲单元标识*/#defineP7/*散列文件中基桶的数目*/#defineITEMS3/*基桶和溢出桶的容量*/typedefstructBucketNode{/*基桶和溢出桶的类型定义*/intKeyData[ITEMS];structBucketNode*Link;}BUCKET;BUCKETBucket[P];/*基桶空间定义*/函数InsertToHashTable代码如下:intInsertToHashTable(intNewElemKey){/*将元素NewElemKey插入散列桶中,若插入成功则返回0,否则返回-1*//*设插入第一个元素前基桶的所有KeyData[]、Link域已分别初始化为NULLKEY、NULL*/intIndex;/*基桶编号*/inti,k;BUCKET*s,*front,*t;______;for(i=0;i<ITEMS;i++)/*在基桶查找空闲单元,若找到则将元素存入*/if(Bucket[Index].KeyData[i]==NULLKEY){Bucket[Index].KeyData[i]=NewElemKey;break;}if(______)return0;/*若基桶已满,则在溢出桶中查找空闲单元,若找不到则申请新的溢出桶*/______;t=Bucket[Index].Link;if(t!=NULL){/*有溢出桶*/while(t!=NULL){for(k=0;k<ITEMS;k++)if(t→KeyData[k]==NULLKEY){/*在溢出桶链表中找到空闲单元*/t→KeyData[k]=NewElemKey;break;}/*if*/front=t;if(______)t=t;Link;elsebreak;}/*while*/}/*if*/if(______){/*申请新溢出桶并将元素存入*/s=(BUCKET*)malloc(sizeof(BUCKET));if(!s)return-1;s→Link=NULL;for(k=0;k<ITEMS;k++)s→KeyData[k]=NULLKEY;S→KeyData[0]=NewElemKey;______;}/*if*/return0;}/*InsertToHashTable*/
问答题【说明】
本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。
程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。
# include <stdio. h>
# define N 12
int b[N+1];
int pos;
int a[9];/* 用于存储诸方格所填入的整数*/
int AllNum=0;/* 统计有多少种填法*/
int checkMatrix[][3]={ {-1},{0,-1},{1,-1},
{0,-1},{1,3,-1},{2,4,-1},
{3,-1},{4,6,-1},{5,7,-1}};
void write(int a[])
{ int i, j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("%3d", a[3*i+j]);
printf("/n");
}
}
int isPrime(int m)
{ int i;
if(m==2)return 1;
if(m==1 ‖ m%2==0)return 0;
for(i=3; i*i<m;)
{ if(m%i==0)return 0;
i+=2;
}
return 1;
}
int selectNum(int start)
{ int j;
for(j=start; j<=N; j++)
if(b[j])return j;
return 0;
}
int check()/*检查填入pos位置的整数是否合理*/
{ int i,j;
for(i=0; (j={{U}} (1) {{/U}})>=0; i++)
if(!isPrime(a[pos]+a[j]))
{{U}}(2) {{/U}};
{{U}}(3) {{/U}};
}
extend ()/* 为下一方格找一个尚未使用过的整数*/
{ a[{{U}} (4) {{/U}}]=selectNum(1);
b[a[pos]]=0;
}
void change ()/*为当前方格找下一个尚未使用过的整数(找不到回溯)*/
{ int j;
while(pos >=0
if(pos<0)return;
b[a[pos]]=1; a[pos]=j; b[j]=0;
}
int find ()
{ int ok=1;
pos=0; a[pos]=1; b[a[pos]]=0;
do{
if(ok)
if(pos==8)
{ write(a);
change();
AllNum++;/* 统计有多少种填法*/
}
else extend();
else change();
ok=check();
}while(pos>=0);
}
void main()
{ int i;
for(i=1; i<=N; i++) b[i]=1;
find();
prinrf("共有%d种不同填法!/n", AllNum);
}
问答题阅读以下利用场景法设计测试用例的技术说明,根据要求回答问题1~问题4。
[说明]
现有的软件通常都是由事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。该软什设计思想也可被引入到软件测试中,从而生动描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使得测试用例更容易得到理解和执行。
用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有基本流(基本事件)和备选流(分支事件)。表7-15是对某IC卡加油机应用系统基本流的描述,表7-16是对该IC卡加油机应用系统备选流的描述。
{{B}}表7-15 基本流描述表{{/B}}
{{B}}序号{{/B}}
{{B}}用例名称{{/B}}
{{B}}用例描述{{/B}}
A1
准备加油
客户将IC加油卡插入加油机
A2
验证加油卡
加油机从加油卡的磁条中读取账户代码,并检查它是否属于可以接收的加油卡
A3
验证黑名单
加油机验证该卡账户是否存在于黑名单中,如果属于黑名单,则加油机吞卡
A4
输入购油量
客户输入需要购买的汽油数量
A5
加油
加油机完成加油操作,从加油卡中扣除相应金额
A6
返回加油卡
退还加油卡
{{B}}表7-16 备选流描述表{{/B}}
{{B}}序号{{/B}}
{{B}}用例名称{{/B}}
{{B}}用例描述{{/B}}
B
加油卡无效
在基本流A2过程中,该卡不能够识别或是非本机可以使用的IC卡,加油机退卡,并退出基本流
C
卡账户属于黑名单
在基本流A3过程中,判断该卡账户属于黑名单(如已经挂失),加油机吞卡并退出基本流
D
加油卡账面资金不足
系统判断加油卡内资金不足,重新加入基本流A4,或选择退卡
E
加油机油量不足
系统判断加油机内油量不足,重新加入基本流A4,或选择退卡
问答题[说明] 计算下列源代码的McCabe环数,画出控制流程图并用罗马数字标出区域。 read x,y,z; type =“scalene”; if (x= =y or x = = z or y= = z)type =“isosceles ”; if (x = = y and x = = z) type =“equilateral”; if (x>= y+ z Or y>= x+20rz>=x+ y) type= “not a triangle”; if (x<=0 or y<= 0 or z <=0) type =“bad inputs”; print type;
问答题[说明]已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。连接电脑的过程中还可自动完成充电。关于唱片,还有以下描述信息:1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。3.每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表3-1所示的类列表、如图3-1所示的初始类图以及如图3-2所示的描述播放器行为的UML状态图。
问答题[说明]以下是某图像二元树存储与还原算法的主要思想描述。设一幅2n×2n的二值图像,以:“1”表示黑像素点,以“0”表示白像素点。图像二元树结构表示依赖于图像的二元分割,即交替在X轴方向和Y轴方向上分割。先进行水平分割,分成两个2n-1×2n图像子块,然后进行垂直分割,分成4个2n-1×2n-1的正方形块,如此分割,直到子块只含同一像素点为止。如图8-8为一“E”字的二值图像,对其进行二元分割,相应的二元树如图8-9所示。根据图像二元树的0叶结点和1叶结点的数目,删除多者,保留少者。如“E”字图像的二元树0叶结点较多,裁剪后如图8-10所示。图8-8图8-10裁剪后的“E”字图像的二元树裁剪后图像二元树有4类结点,分别用二进制编码如下:◆左右儿子都有的结点,编码为11;◆仅有左儿子的结点,编码为10;◆仅有右儿子的结点,编码为01;◆叶结点,编码为00。存储时,先存储剩余叶结点的类型编码,二进制码00表示0叶结点,11表示1叶结点。再按层次顺序,自左至右存储裁剪后图像二元树各结点的编码。图像二元树的存储算法用C语言描述所定义的数据结构及函数如下:structNode{/*图像二元树结点*/streetNode*Left;streetNode*Right;charPixel;}structNodeQueue[MaxLen];/*队列*/InitQueue()/*初始化队列Queue的函数;*/EmptyQueue()/*判断队列Queue是否为空的数,若空返回1,否则返回0;*/AddQueue(Item)/*将Item加到队列Queue的数;*/GetQueue()/*取队列Queue第一个元素的函数;*/PutCode(Code)/*写2位二进制码Code到文件的函数*/还原算法是存储算法的逆过程,将文件中的二进制码序列转换成图像二元树。还原算法的数据结构与函数与存储算法的相同,还原算法新增了一个函数GetCode()。GetCode()/*从文件中读2位二进制码的函数*/[C程序]存储算法voidBackup(charCutPixel,structNodeImageTree)'/*CutPixel=0表示裁剪0叶结点*/{InitQueue();AddQueue(ImageTree);PutCode(1-CutPixel);While(!EmptyQueue()){TreeNode=GetQueue();if(TreeNode→Left==NULL){PutCode(0);continue:}Tl=TreeNode→Left;Tr=TreeNode→Right;if(Tl→Left==NULLelse{{{U}}(1){{/U}};AddQueue(Tl);}if(Tr→Left==NULLelse{{{U}}(2){{/U}}AddQueue(T);}{{U}}(3){{/U}}}}还原算法voidRestore(structNode*TreeRoot){TreeRoot=(strutNode*)malloc(sizeof(structNode)InitQueue();AddQueue(TreeRoot);CutPixel=1-GetCode();while(!EmptyQueue()){TrecNode=GetQueue(Queue);NodeCode=GetCode();switch(NodeCode){case0:TreeNode→Left=NULL;TreeNode→Right=NULLTreePixel={{U}}(4){{/U}};break;case1:Tr=(structNode*)mallocsizeof(structNode)TreeNode→Right=Tr;AddQueue(Tr);TI=(structNode*)mallocsizeof(structNode)Tl→Lefi-NULL;Tl→RightNULL;Tl→Pixel=CutPixel;break;case2:T1=(structNode*)mallocsizeof(structNode)TreeNode→Left=Tl;{{U}}(5){{/U}};Tr=(structNode*)malloc(sizeof(streetNode)Tr→Left=-NULL;Tr→Right=NULL,,Tr→Pixel=CutPixel;break;case3:T1=(structNode*)malloc(sizeof(structNode)TreeNode→Right=Tl;AddQueue(T1);Tr=(structNode*)malloc(sizeof(structNodeTreeNode→Right=Tr;AddQueue(Tr);break;}}}
问答题试题六(共15分)阅读下列说明和JAVA代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲构造一文/目录树,采用组合(Composite)设计模式来设计,得到的类图如6-1所示:
问答题【说明】现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图9-6显示了各个类间的关系。这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是Java语言实现,能够正确编译通过。【Java代码】//DP1.java文件publicclassDP1{staticpublicvoiddraw_aline(doublex1,doubley1,doublex2,doubley2){//省略具体实现}}//DP2.java文件publicclassDP2{staticpublicvoiddrawline(doublex1,doubley1,doublex2,doubley2){//省略具体实现}}//Drawing.java文件{{U}}(1){{/U}}publicclassDrawing{abstractpublicvoiddrawLine(doublex1,doubley1,doublex2,doubley2);}//V1Drawing.java文件publicclassV1DrawingextendsDrawing{publicvoiddrawLine(doublex1,doubley1,doublex2,doubley2){DP1.draw_a_line(x1,y1,x2,y2);}}//V2Drawing.java文件publicclassV2DrawingextendsDrawing{publicvoiddrawLine(doublex1,doubley1,doublex2,doubley2)(//画一条直线{{U}}(2){{/U}};}}//Shape.java文件abstractpublicclassShape{abstractpublicvoiddraw();private{{U}}(3){{/U}}_dp;Shape(Drawingdp){_dp=dp;}protectedvoiddrawLine(doublex1,doubley1,doublex2,doubley2){{{U}}(4){{/U}};}}//Rectangle.java文件publicclassRectangleextendsShape{privatedouble_x1,_x2,_y1,_y2;publicRectangle(Drawingdp,doublex1,doubley1,doublex2,doubley2){ {{U}}(5){{/U}};_x1=x1;_x2=x2;_y1=y1;_y2=y2;}publicvoiddraw(){//省略具体实现}}
问答题[说明]某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。[需求分析结果]1.登记参赛球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队的每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。2.安排球队的训练信息。比赛组织者为球队提供了若干个场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如表3-9所示。系统记录训练场地安排的信息。表3-9训练安排表球队名称场地名称训练时间解放军一号球场2008-06-0914:00-18:00解放军一号球场2008-06-1209:00-12:00解放军二号球场2008-06-1114:00-18:00山西一号球场2008-06-1009:00-12:003.安排比赛。该赛事聘请有专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队、比赛时间、比分、场地名称等信息,如表3-10所示。表3-10比赛安排表A组:甲队…乙队场地名称比赛时间裁判比分解放军…北京一号球场2008-06-1715:00李大明天津…山西一号球场2008-06-1719:00胡学梅B组甲队…乙队场地名称比赛时间裁判比分上海…安徽二号球场2008-06-1715:00丁鸿平山东…辽宁二号球场2008-06-1719:00郭爱琪4.所有球员、教练和裁判可能出现重名情况。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下。1.实体联系图(图3-20)2.关系模式教练(教练编号,姓名,年龄)队员(队员编号,姓名,年龄,身高,体重,(a)球队(球队名称,代表地区,成立时间,(b)场地(场地名称,场地规模,位置)训练记录((c))裁判(裁判编号,姓名,年龄,级别)比赛记录((d))
问答题【说明】 供应商—零件—工程项目数据库由以下4个关系模式构成: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT,CITY) J(JNO,TNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 其中,供应商S,零件P和工程项目J分别由供应商号(SNO),零件号(PNO)和工程项目号(JNO)唯一标识。供货SPJ是指由某个供应商向某个工程项目供应某些数量的某种零件。1. 【问题1】 请用SQL语言完成如下的操作。 ①找出给北京的工程项目提供不同的零件号: ②将没有供货的所有工程项目从J中删除; ③查询这样的工程项目号:供给该工程项目的零件P1的平均供应量大于供给工程项目n的任何一种零件的最大供应量。 【问题2】 定义一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:它们由供应商S1供货且使用零件P1。
问答题【说明】 本流程图是将中缀表示的算术表达式转换成后缀表示。如中缀表达式 (A-(B*C+D)*E)/(F+G)) 的后缀表示为 ABC*D+E*-FG+/ 为了方便,假定变量名为单个英文字母,运算符只有+、-、*、/(均为双目运算符,左结合),并假定所提供的算术表达是非空且语法是正确的。另外,中缀表示形式中无空格符,但整个算术表达式以空格符结束。流程图中使用的符号的意义如下: 数组 IN[]存储中缀表达式; 数组 POLISH[]存储其后缀表达式; 数组 S[]是一个后进先出栈; 函数PRIOR(CHAR)返回符号CHAR的优先级,各符号的优先级见表2: 表2 CHAR PRIOR(XHAR) */ + - ( ) 4 3 2 1 1. 【问题1】 填充流程图中①的判断条件。
问答题【问题2】(3 分)
【问题】中伪代码的时间复杂度为U(7)/U(用Ο 符号表示)。
问答题
