HDU 1509

Windows Message Queue

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3154    Accepted Submission(s): 1267

Problem Description

Message queue is the basic fundamental of windows system. For each process, the system maintains a message queue. If something happens to this process, such as mouse click, text change, the system will add a message to the queue. Meanwhile, the process will do a loop for getting message from the queue according to the priority value if it is not empty. Note that the less priority value means the higher priority. In this problem, you are asked to simulate the message queue for putting messages to and getting message from the message queue.

Input

There's only one test case in the input. Each line is a command, "GET" or "PUT", which means getting message or putting message. If the command is "PUT", there're one string means the message name and two integer means the parameter and priority followed by. There will be at most 60000 command. Note that one message can appear twice or more and if two messages have the same priority, the one comes first will be processed first.(i.e., FIFO for the same priority.) Process to the end-of-file.

Output

For each "GET" command, output the command getting from the message queue with the name and parameter in one line. If there's no message in the queue, output "EMPTY QUEUE!". There's no output for "PUT" command.

Sample Input

GET PUT msg1 10 5 PUT msg2 10 4 GET GET GET

Sample Output

EMPTY QUEUE! msg2 10 msg1 10 EMPTY QUEUE!

我的代码:

#include<iostream>
#include<string.h>
using namespace std;
struct message
{
	char name[10];
	int parameter,priority;
	message *next;
}*head;
void put(char *n,int pa,int pr)
{
	message *newnode,*temp,*pre;
	newnode=new message;
	strcpy(newnode->name,n);
	newnode->parameter=pa;
	newnode->priority=pr;
	newnode->next=NULL;
	if(head==NULL)
	{
		head=newnode;
	}
	else
	{
		if(head->priority>pr)
		{
			newnode->next=head;
			head=newnode;
		}
		else
		{
			temp=head;
			while(temp->priority<=pr&&temp->next!=NULL)
			{
				pre=temp;
				temp=temp->next;
			}
			if(temp->priority<=pr&&temp->next==NULL)
				temp->next=newnode;
			else
			{
				newnode->next=temp;
				pre->next=newnode;	
			}
		}
	}
//	delete newnode;
}
void get()
{
	if(head==NULL)
		printf("EMPTY QUEUE!\n");
	else
	{
		printf("%s %d\n",head->name,head->parameter);
		if(head->next==NULL)
			head=NULL;
		else
			head=head->next;
	}
}
void main()
{
	char ch[5],n[10];
	int pa,pr;
	head=NULL;
	while(scanf("%s",ch)==1)
	{
		if(strcmp(ch,"GET")==0)
			get();
		else
		{
			scanf("%s %d %d",n,&pa,&pr);
			put(n,pa,pr);
		}
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 启用mac自带Apache & 虚拟主机配置

    csxiaoyao
  • LESS 学习demo

    csxiaoyao
  • HDU 1075 字典树 字符串匹配

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K (Java...

    csxiaoyao
  • 数据受限的Kaggle图像分类的最新获奖技术

    在本文中,将介绍用于课堂内Kaggle挑战的方法。花了大约两个星期的时间在挑战赛上,最终提交分数为0.97115,使在最终排行榜上排名第二。

    代码医生工作室
  • 可以提高你的图像识别模型准确率的7个技巧

    但是,尽管你投入了数小时(有时是数天)的工作来创建这个模型,它还是能得到50-70%的准确率。这肯定不是你所期望的。

    deephub
  • Oracle闪回原理测试(三)(r12笔记第16天)

    对于Oracle的闪回,很多朋友也问过问,到底是怎么玩的?如果自己做过一些闪回数据库的操作,就会发现这个功能非常强悍。 Flashback DML的操作...

    jeanron100
  • 大会 | 智能感知与计算研究中心11篇论文被CVPR接收

    AI 科技评论按:本文作者郭瑞娥,首发于中科院自动化所「智能感知与计算研究中心」微信公众号,AI 科技评论获授权转载。 CVPR 是计算机视觉、模式识别和人工智...

    AI科技评论
  • 这个AI正在解码我们的大脑,它比人类更适合当“科学家”

    原作:Roger Highfield @《连线》 李杉 李林 编译整理 量子位 出品 | 公众号 QbitAI ? - 壹 - 罗米(Romy Lorenz)是...

    量子位
  • “转移战场”的暗网市场继续繁荣

    7月20日,美国前司法部长JeffSessions在新闻发布会上宣布了当前全球最大黑市网站“阿尔法湾”(AlphaBay)覆灭的消息。7月初,许多用户突然发现无...

    FB客服
  • 腾讯云如何快速添加域名解析

    当你在腾讯云建站之前,要把域名解析到服务器 IP或者 CNAME上面,今天魏艾斯博客讲解在腾讯云如何快速添加域名解析。

    魏艾斯博客www.vpsss.net

扫码关注云+社区

领取腾讯云代金券