还剩4页未读,继续阅读
文本内容:
北邮数据结构实验报告线性表北邮数据结构实验报告线性表实验报告;课程名称数据结构班级软件工程实验成绩;1206;实验名称打印机队列模拟学号xx4848批;程序的设计;实验编号实验一姓名实验日期xx年5月2;
一、实验目的;对队列的理解;对STL中的queue的使用;实验仿真一个网络打印过程;
二、实验内容与实验步骤流程图;这个任务队列的测试使用STL队列适配器;具体地说每一行中包含的信息是课程名称数据结构班级软件工程实验成绩1206实验名称打印机队列模拟学号xx4848批阅教师签字实验编号实验一姓名实验日期xx年5月24日对队列的理解对STL中的queue的使用实验仿真一个网络打印过程这个任务队列的测试使用STL队列适配器程序要求完成模拟的实现共享打印机这个打印机使用先进先出队列仿真是通过读取和处理事件数据文件的列表一个有效的数据文件中的每一行包含信息打印作业和提交这份工作的时间具体地说每一行中包含的信息是提交工作的时间以秒为单位和在页面的工作长及工作的计算机的名称在模拟的开始每个这些事件的每一个应该被程序所读,存储在继承工作负载队列程序应该通过循环递增计数器或while-loop模拟时间的流逝程序应该将计数器初始化为零然后依次增加1秒当模拟等于当前时间的打印作业的`提交时间在工作队列的前面,一个打印作业完成当这一切发生的时候从工作队列取出这个事件然后把它放在另一个队列对象这个队列对象存储已完成的打印作业当程序仿真其他的打印工作的时候,这些工作在队列等待Win8,VisualC++
6.01实验主要函数及存储结构main.cpp包括主函数和主要的功能simulator.h仿真类的声明simulator.cpp仿真类的定义event.h事件类的声明event.cpp-事件类的定义job.h作业类的声明job.cpp作业类的定义arbitrary.run包括任意打印作业数的数据文件arbitrary.out输出arbitrary.runbigfirst.run包括打印较大作业的数据文件bigfirst.out输出bigfirst.run2实验代码#ifndefFIFOH//fifo.h#defineFIFOH#includesimulator.hclassfifo:publicsimulator{protected:queuewaiting;priorityqueueprioritywaiting;public:fifointsecondsperpage;voidsimulatestringfile;};booloperatoreventevtlefteventevtright;#endif#includefifo.h//fifo.cpp#includeusingnamespacestd;fifo::fifointsecondsperpage:simulatorsecondsperpage{}voidfifo::simulatestringfile{intfinishtime=0;floatagglatency=0;inttotaljob=0;eventevt;iffile.findarbitrary!=string::npos{stringoutfile=arbitrary.out;ofstreamosfoutfile.cstr;loadworkloadfile;osfFIFOSimulationforinttime=1;!waiting.empty||!workload.empty;time++{while!workload.emptytime==workload.front.arrivaltime{evt=workload.front;osfArriving:workload.pop;}if!waiting.emptytime=finishtime{totaljob++;evt=waiting.front;agglatency+=time-evt.arrivaltime;osfServicing:finishtime=time+evt.getjob.getnumpages*secondsperpage;}}osftotaljobosfaggregatelatency:osfmeanlatency:return;}iffile.findbigfirst!=string::npos{stringoutfile=bigfirst.out;ofstreamosfoutfile.cstr;loadworkloadfile;osfFIFOSimulationforinttime=1;!prioritywaiting.empty||!workload.empty;time++{while!workload.emptytime==workload.front.arrivaltime{evt=workload.front;osfArriving:workload.pop;}if!prioritywaiting.emptytime=finishtime{totaljob++;evt=prioritywaiting.top;agglatency+=time-evt.arrivaltime;osfServicing:finishtime=time+evt.getjob.getnumpages*secondsperpage;}}osftotaljobosfaggregatelatency:osfmeanlatency:return;}cerrTheprogramdontknowwhatalgorithmtousecerrYoushouldspecifythefilenamewitharbitraryorbigfirstbooloperatoreventevtlefteventevtright{returnevtleft.getjob.getnumpagesevtright.getjob.getnumpages;}经测试,功能较为完整代码流程简图如下通过这次实验,我了解了有关队列方面的知识掌握了队列的逻辑结构,抽象数据类型,队列的存储方式等运用先进先出表,仿真了网络打印队列这都使我对数据结构的学习有了新的认识与帮助在实验过程中,我也遇到了许多困难,从开始时对队列运算的不熟悉,到逐渐查找资料,从而完成了实验;
六、附录;-《数据结构与算法分析》以及网上资料;逐渐查找资料,从而完成了实验在今后的学习中,我将继续努力,加强对堆栈,队列等知识的学习,以到达精益求精-《数据结构与算法分析》以及网上资料
1.
2.。