日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)

發布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文出自:http://blog.csdn.net/svitter

題目12:計算機學院學生會的打印機(優先隊列)

小明抱怨學生會的打印機不符合FIFO的原則,看到很多在他后面來打印的同學比他先打印出來。五分鐘前,小明的文件就是下一個候選的,如今小明的文件又排到了后面。學生會的同學給小明解釋說,學生會的打印機不是採用傳統的隊列方式,而是採用一種自定義的優先隊列方式:每一個要打印的文件被賦予了一個從19的優先級(9最高,1最低)。打印規定例如以下:

將隊列中要打印的文件f從隊列中拿出來;

假設在隊列中有優先級高于f的文件,則不打印f,將f排到隊列的最后;否則打印f

小明知道打印新規以后,詢問他的文件到底多長時間可以打印出來,如果沒分文件打印的時間都是1分鐘,小明的文件在打印隊列中,而且不再有新的文件進入到打印隊列。請你幫助小明計算一下他還須要等多長時間。建議完畢人數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號正在增加隊列...\n", i);p = new Node(val, NULL, i);if(i == m){mval = val;}q->push(p);}q->check(mval);//printf("隊列增加完畢。\n");while(!q->IsEmpty()){p = q->top();//printf("當前打印的是第%d號\n", p->num);if(p->num == m){printf("小明在第%d分鐘打印。\n", num);}q->pop();num++;}}return 0; }


Queue.cpp:

/** Queue.cpp** Created on: 2014?ê6??15è?* Author: vit*/#include <stdio.h> #include "Queue.h"Queue::Queue() {// TODO Auto-generated constructor stubthis->front = this->rear = NULL; }bool Queue::IsEmpty(){return this->rear == NULL; }void Queue::push(Node *n){if(IsEmpty()){this->front = this->rear = n;}else{this->rear->next = n;this->rear = n;}return; }void Queue::pop(){if(IsEmpty()){return;}Node *p = this->front;if(this->front == this->rear){p = this->front;this->front = this->rear = NULL;}else{p = this->front;this->front = this->front->next;}delete p; }Node * Queue::top(){if(IsEmpty()){return NULL;}int value = this->front->value;Node *p = this->front;while(p->next != NULL){if(p->next->value <= value)p = p->next;else{this->rear->next = this->front;this->rear = p;this->front = p->next;p->next = NULL;p = this->front;value = p->value;}}return this->front; }void Queue::check(int mval) {Node *p = this->front;Node *temp;while(p->next != NULL){if(p->next->value < mval){temp = p->next;p->next = p->next->next;delete temp;}//p指向下一個節點p = p->next;} }Queue::~Queue() {// TODO Auto-generated destructor stubwhile(!IsEmpty()){Node *temp;temp = this->front;this->front= this->front->next;delete temp;} }



Queue.h:

/** Queue.h** Created on: 2014年6月15日* Author: vit*/#ifndef QUEUE_H_ #define QUEUE_H_class Node { public:int value;int num;Node *next;Node(){this->value = 0;this->num = 0;this->next = 0;}Node(int value, Node *next, int num){this->value = value;this->next = next;this->num = num;} };class Queue { public:Queue();virtual ~Queue();//methodvoid push(Node *n);void pop();Node* top();bool IsEmpty();void check(int mval);//memberNode *front;Node *rear; }; #endif /* QUEUE_H_ */

轉載于:https://www.cnblogs.com/mfrbuaa/p/3849357.html

總結

以上是生活随笔為你收集整理的数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。