数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
本文出自:http://blog.csdn.net/svitter
題目12:計(jì)算機(jī)學(xué)院學(xué)生會(huì)的打印機(jī)(優(yōu)先隊(duì)列)
小明抱怨學(xué)生會(huì)的打印機(jī)不符合FIFO的原則,看到很多在他后面來打印的同學(xué)比他先打印出來。五分鐘前,小明的文件就是下一個(gè)候選的,如今小明的文件又排到了后面。學(xué)生會(huì)的同學(xué)給小明解釋說,學(xué)生會(huì)的打印機(jī)不是採用傳統(tǒng)的隊(duì)列方式,而是採用一種自定義的優(yōu)先隊(duì)列方式:每一個(gè)要打印的文件被賦予了一個(gè)從1到9的優(yōu)先級(jí)(9最高,1最低)。打印規(guī)定例如以下:
將隊(duì)列中要打印的文件f從隊(duì)列中拿出來;
假設(shè)在隊(duì)列中有優(yōu)先級(jí)高于f的文件,則不打印f,將f排到隊(duì)列的最后;否則打印f。
小明知道打印新規(guī)以后,詢問他的文件到底多長時(shí)間可以打印出來,如果沒分文件打印的時(shí)間都是1分鐘,小明的文件在打印隊(duì)列中,而且不再有新的文件進(jìn)入到打印隊(duì)列。請(qǐng)你幫助小明計(jì)算一下他還須要等多長時(shí)間。建議完畢人數(shù)1人。
加入了小元素的篩選代碼
PriorityQueue.cpp:
//============================================================================ // Name : PriorityQueue.cpp // Author : vit // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================#include <iostream> #include <stdio.h> #include "Queue.h" using namespace std;int main() {Queue *q;q = new Queue();int i;int n, m, val, num;int mval;Node *p;freopen("test", "r", stdin);while(~scanf("%d%d", &n, &m)){num = 1;for(i = 1; i <= n; i++){scanf("%d", &val);//printf("第%d號(hào)正在增加隊(duì)列...\n", i);p = new Node(val, NULL, i);if(i == m){mval = val;}q->push(p);}q->check(mval);//printf("隊(duì)列增加完畢。\n");while(!q->IsEmpty()){p = q->top();//printf("當(dāng)前打印的是第%d號(hào)\n", p->num);if(p->num == m){printf("小明在第%d分鐘打印。\n", num);}q->pop();num++;}}return 0; }
Queue.cpp:
Queue.h:
轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/3849357.html
總結(jié)
以上是生活随笔為你收集整理的数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jqGrid Events
- 下一篇: 配置源码管理工具(2)