北邮数据结构实验报告线性表

时间:2022-07-01 22:42:43 报告范文 我要投稿
  • 相关推荐

北邮数据结构实验报告线性表

实验报告;课程名称:数据结构班级:软件工程实验成绩:;1206;实验名称:打印机队列模拟学号:20124848批;程序的设计;实验编号:实验一姓名:实验日期:2014年5月2;一、实验目的;对队列的理解;对STL中的queue的使用;实验仿真一个网络打印过程;二、实验内容与实验步骤流程图;这个任务队列的测试使用STL队列适配器;具体地说,每一行中包含的信息是

北邮数据结构实验报告线性表

实 验 报 告

课程名称:数据结构 班级:软件工程实验成绩:

1206

实验名称:打印机队列模拟学号:20124848 批阅教师签字:

程序的设计

实验编号:实验一 姓名: 实验日期:2014年5 月 24 日

一、实验目的

对队列的理解

对STL中的queue的使用

实验仿真一个网络打印过程

二、实验内容与实验步骤流程图

这个任务队列的测试使用STL队列适配器。程序要求完成模拟的实现共享打印机。这个打印机使用先进先出队列。仿真是通过读取和处理事件数据文件的列表。一个有效的数据文件中的每一行包含信息打印作业和提交这份工作的时间。

具体地说,每一行中包含的信息是提交工作的时间(以秒为单位),和在页面的工作长及工作的计算机的名称。在模拟的开始,每个这些事件的每一个应该被程序所读,存储在继承工作负载队列。程序应该通过循环递增计数器或while-loop模拟时间的流逝。程序应该将计数器初始化为零,然后依次增加1秒。当模拟等于当前时间的打印作业的提交时间在工作队列的前面,一个打印作业完成。当这一切发生的时候,从工作队列取出这个事件,然后把它放在另一个队列对象。这个队列对象存储已完成的打印作业。当程序仿真其他的打印工作的时候,这些工作在队列等待。

Win8,Visual C++ 6.0

四、实验过程与分析

(1)实验主要函数及存储结构

main.cpp 包括主函数和主要的功能

simulator.h 仿真类的声明

simulator.cpp 仿真类的定义

event.h 事件类的声明

event.cpp - 事件类的定义

job.h 作业类的声明

job.cpp 作业类的定义

arbitrary.run 包括任意打印作业数的数据文件

arbitrary.out 输出 arbitrary.run

bigfirst.run 包括打印较大作业的数据文件

bigfirst.out 输出 bigfirst.run

(2)实验代码

#ifndef FIFO_H //fifo.h

#define FIFO_H

#include "simulator.h"

class fifo:public simulator{

protected:

queue waiting;

priority_queue priority_waiting;

public:

fifo(int seconds_per_page);

void simulate(string file);

};

bool operator < (event evtleft,event evtright);

#endif

#include "fifo.h" //fifo.cpp

#include

using namespace std;

fifo::fifo(int seconds_per_page):simulator(seconds_per_page){ }

void fifo::simulate(string file){

int finish_time = 0;

float agg_latency = 0;

int totaljob =0;

event evt;

if(file.find("arbitrary")!= string::npos){

string outfile ="arbitrary.out";

ofstream osf(outfile.c_str());

loadworkload(file);

osf<<"FIFO Simulation "<

for(int time =1;!waiting.empty()||!workload.empty();time++){ while(!workload.empty() && time ==

workload.front().arrival_time()){

evt= workload.front();

osf<<" Arriving: "<

workload.pop();

}

if(!waiting.empty() && time >= finish_time){

totaljob ++;

evt = waiting.front();

agg_latency += time - evt.arrival_time();

osf<<" Servicing: "<

finish_time = time + evt.getjob().getnumpages() * seconds_per_page;

}

}

osf<<" total job "<

osf<<" aggregate latency: "<

osf<<" mean latency : "<

return;

}

if(file.find("bigfirst") != string::npos){

string outfile = "bigfirst.out";

ofstream osf(outfile.c_str());

loadworkload(file);

osf<<"FIFO Simulation "<

for(int time

=1;!priority_waiting.empty()||!workload.empty();time++){

while(!workload.empty() && time ==

workload.front().arrival_time()){

evt= workload.front();

osf<<" Arriving: "<

workload.pop();

}

if(!priority_waiting.empty() && time >= finish_time){

totaljob ++;

evt = priority_waiting.top();

agg_latency += time - evt.arrival_time();

osf<<" Servicing: "<

finish_time = time + evt.getjob().getnumpages() * seconds_per_page; }

}

osf<<" total job "<

osf<<" aggregate latency: "<

osf<<" mean latency : "<

return;

}

cerr<<"The program don't know what algorithm to use"<

cerr<<"You should specify the file name with arbitrary or bigfirst"<

bool operator < (event evtleft,event evtright){

return evtleft.getjob().getnumpages() <

evtright.getjob().getnumpages();

}

五、实验结果总结

经测试,功能较为完整。代码流程简图如下:

通过这次实验,我了解了有关队列方面的知识。掌握了队列的逻辑结构,抽象数据类型,队列的存储方式等。运用先进先出表,仿真了网络打印队列。这都使我对数据结构的学习有了新的认识与帮助。在实验过程中,我也遇到了许多困难,从开始时对队列运算的不熟悉,到逐渐查找资料,从而完成了实验;六、附录;-《数据结构与算法分析》以及网上资料;

逐渐查找资料,从而完成了实验。在今后的学习中,我将继续努力,加强对堆栈,队列等知识的学习,以达到精益求精。

六、附录

-《数据结构与算法分析》以及网上资料


相关文章:

1.北邮数据结构实验报告线性表

2.北邮数据结构实验报告 图

【北邮数据结构实验报告线性表】相关文章:

北邮研究生在京就业前景如何07-14

北邮的通信工程就业前景怎么样07-14

北邮的工程管理专业好吗?以后就业前景咋样啊?07-11

北邮网络工程专业和通信工程就业前景谁更好?07-14

北邮考研考哪个院的研究生就业前景好一些07-14

北邮通信,华科电气工程及其自动哪个好?哪个就业前景好?07-11

同济大学的土木工程和北邮的通信工程哪个就业前景更好07-14

调剂到北邮软院读通信工程专业怎么样?就业前景好吗?07-14

京东包邮吗?07-11

科技实验报告05-26