【实习二】栈及队列的应用_第1页
【实习二】栈及队列的应用_第2页
【实习二】栈及队列的应用_第3页
【实习二】栈及队列的应用_第4页
【实习二】栈及队列的应用_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【实习2】栈内存和队列的应用、实习2(1)栈内存的应用、【实习主题】(1)数转换问题(2)火连营(3)算术式评价、(2)火连营、【问题说明】。 【基本要求】请制作计程仪程序,读入文本文件的内容。 提供MFC接口,输入任意点的x和y值(x70,y40 )作为关着火温度字,“火连营”后,在燃烧的营业帐户上标上字母x,将整个结果输出到文件c2.txt。 【实现提示】基本思想:从着火温度的位置,在四连思想的上下左右寻找邻近点的实现构想:打开一个栈内存,首先栈内存着火温度,重复下一个操作:栈内存顶点标记x,同时将符合燃烧条件的邻近点加入栈内存。 输出: x系列,查找燃烧文字! 【测验数据】c1.txt,

2、(3)算术式评价,【问题说明】合法的式评价。 假设表达式仅包含四个双目运算符-、*、/并行政许可括号的出现,并且运算符本身没有二义性。 /正确解释3.5*(7 2) /(-6 )、【基本要求】式。 符合四则运算规则:先乘除、后加减左至右运算尖括弧内、后括弧外输出最后的修正运算结果,【实现牛鼻子】2个栈内存的使用为2位以上、负数、小数点? 【实现方式】基本:其他端口计程仪程序MFC对话框(注意ON_CONTROL_RANGE的使用) Example,选项:功能扩展算术运算符通讯端口: %增函数运算: sqrt,pow,sin stack另一个栈内存OPND :存储歌舞剧stack 2, 运算符之

3、间的优先级关系是二次元数组、运算符优先级,例如:运算符优先级比较、charmy calculator 33603360 comp (constcharleft,const char right) /可以使用它的intsmax99=/*/1、1、2、2、2 for (英寸=0; I; case 2:返回; case :返回=; default:实习2(2)栈内存和矩阵的综合应用、1、停车区问题2、魔王语言解释器3、栈内存仿真矩阵、实习2的选择内容、【问题说明】停车区是可以汽车停车n台汽车的细长通道,并且只有一个大门可以进出汽车。 汽车在汽车停车场内按车辆到达时间的顺序由北向南排列(男同性恋位于最

4、南端,最初到达的第一辆车停在通讯端口的最北端)。 车内停着n辆汽车的话,之后的汽车只能在门外的人行道等,车辆一开过去,人行道上排列的第一辆车就能进去。 在汽车停车场内的某辆车要离开时,其后进入的车辆必须先退出车场,为此让路,等到那辆车走出大门,其他车辆按顺序进入车场,汽车停车车场的车辆离开停车区时必须按其停留时间的长短来支付费用为了停车区,按照上述要求试着制作管理的模拟计程仪程序。 1、停车区管理模拟,【基本要求】用栈内存模拟停车区,用列模拟车场外的人行道,按照从终端读入的输入数据序列(或MFC接口)进行模拟管理。 每个输入数据定径套包括三个数据项:汽车的“到达”或“离开”信息、车辆号牌号和到

5、达或离开时间。按小组输入的数据操作后的输出信息,当车辆到达时,输出汽车停车场内或人行道上的汽车汽车停车位置,当车辆离开时,输出汽车在停车区停留的时间和应支付的费用(在人行道上停留的时间是不收费的)。 栈内存以顺序结构实现,队列以链表结构实现。 【实现提示】设置别的栈内存,为了给远离的汽车让路,暂时汽车停车从停车区退出的汽车,也需要在顺序存储结构实现。 传入数据按到达或离开的时间节点排序。 栈内存中的每个元素代表一辆汽车,包括汽车的车辆号牌号和进入停车区的时间两个数据项。 【思考】(1)两个栈内存共有空间,思考应该打开数组的空间是多少? (2)如果汽车有不同的种类,他们的占地面积不同,收费标准也

6、不同。 例如,1辆轿车和1.5辆轿车占地面积相同,1辆10轮卡车的占地面积相当于3辆轿车的占地面积。 (3)汽车可以直接从人行道行驶。 那时,排在前面的汽车先让路,然后按顺序排队。 (4)人行道上汽车停车的车也是收费的,因为费用标准比与停车区汽车停车的车要低,所以请考虑修改结构以满足这个要求的方法。 2、魔王语言解释器,【问题说明】有的魔王总是用自己非常精致的抽象语言说话,没有人能听懂,但是他的语言能逐步解释成人能听懂的语言。 因为他的语言是根据以下两种形式的规则从人的语言中逐步抽象化的: (1)12m(2)试着写魔王语言的解释系统,把他的语言解释为大人能理解的语言。 【基本要求】以下述2个具

7、体的规则和上述的规则形式(2)实现。 用大写字母表示魔王的语言小写字母表示人的语言希腊字母表示可以用大写字母或小写字母置换的变量,魔王语言可以包含人的语言。 魔王将1)B-tAdA (2)A-sae、【测验数据】B(ehnxgz)B解释为tsaedsaeezegexenehetsaedsae,并将小写字母和中国字设为下表所示的对应关系。 【实现提示】魔王的话从右向左栈内存,经常处理栈内存掌门人文字。 如果有开放的括号,则按字母顺序排队,一次排队一个,直到括号栈内存定,然后根据规则的请求一次排队,最后再排队栈内存定。 3、用栈内存模拟队列,【问题说明】请用两个栈内存s1和s2模拟一个队列。 已知

8、栈内存的三个运算定义是:推(s,x ) :元素x进入s栈内存。 Pop(S,x ) :确定s栈内存掌门人元素的栈内存S_IsEmpty(S ) :栈内存为空,true为空,false为空。 top为栈内存掌门人指针试用栈内存的运算实现队列的三个运算: (1)EnQueue :排队,向队列中插入元素(2)DeQueue :离开队列,从队列中删除元素(3)Q_IsEmpty :判断队列为空。 【实现提示】使用一方的栈内存为输入,另一方的栈内存为输出的2个栈内存,模拟一方的队列运算的思想。 排队时,数据总是进入输入的栈内存输出时,如果输出的栈内存为空,则将从输入栈内存输入到输入栈内存的所有数据输入到

9、输出栈内存,从输出栈内存输出数据如果输出的栈内存不为空,则从输出栈内存输出数据。 【主题分析】栈内存的特征是后进先出,队列的特征是先进先出。 因此,如果在两个栈内存s1和s2中模拟一个队列,则s1是输入栈内存,它通过推一推每个元素的栈内存来模拟队列元素的入队。 当需要出队时,将栈内存s1一个接一个地推入栈内存s2,s1中最先进入该栈内存的元素在s2中位于栈内存的最上面。 s2栈内存输出相当于队列的出队,实现了先进的先入先出。 显然,只有当栈内存s2为空并且s1也为空时,才会将队列视为空。 【算法探讨】假设算法中栈内存s1和栈内存s2的容量相同。出队:退出栈内存s2,s2为空时,如果s1不为空,则将s1放入s2,退出栈内存。 入队:在s1中,如果s1已满,s2为空,则将s1放入s2,然后入队。 因此,队列容量等于两个栈内存的容量之和。 要素必须从栈内存s1放入s2,s2为空时进行。 也就是说,请求出队操作时,如果s2为空,则不论s1要素多少(如果不是空)都必须进入s2。 算法思想,栈内存s1和s2,s1被用作入队,s2是入队1,而判决是入队2,如果s1已满且s2不为空,则判决工作团队空: s1和s2都为空,则为工作团队空。 3、入队:首先入队,如果入队不满意: (1)如果栈内存s1不满意,则直接按入栈内存s1 (2)如果s1已满,则在

温馨提示

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

评论

0/150

提交评论