当前位置:   article > 正文

#头歌 算法 应用经典二叉树编程-Windows Message Queue(中文版)

#头歌 算法 应用经典二叉树编程-Windows Message Queue(中文版)

第1关:Windows Message Queue(中文版)

题目描述

消息队列是 windows 系统的基础。对于每个进程,系统维护一个消息队列。如果这个过程发生了一些事情,比如鼠标点击、文本更改,系统将向队列添加一条消息。同时,如果队列不为空,进程将根据优先级值从队列中获取消息。注意,优先级越低,优先级越高。在这个问题中,要求您模拟消息队列,以便将消息放入消息队列并从消息队列获取消息。

输入格式

输入中只有一个测试用例。每一行都是一个命令,GETPUT ,意思是获取消息或放置消息。如果命令是PUT,则有一个字符串表示消息名称,两个整数表示参数和优先级。最多有 60000 个命令。请注意,一条消息可以出现两次或两次以上,如果两条消息具有相同的优先级,则最先出现的消息将首先被处理。FIFO 优先级相同。)处理到文件结束。

输出格式

对于每个 GET 命令,输出从消息队列中获得的命令,并将名称和参数放在一行中。如果队列中没有消息,则输出 EMPTY queue !PUT 命令没有输出。

输入输出样例

输入
 
  1. GET
  2. PUT msg1 10 5
  3. PUT msg2 10 4
  4. GET
  5. GET
  6. GET
输出
 
  1. EMPTY QUEUE!
  2. msg2 10
  3. msg1 10
  4. EMPTY QUEUE!

截止后通关代码

 #include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<queue>

#include<stack>

#include<algorithm>

using namespace std;


 

struct node

{

    char str[50];

    int k;

    int num;

    int id;

    friend bool operator<(node a,node b )

    {

        if(a.id !=b.id )

        return a.id>b.id;

        else

        return a.num >b.num ;    

    }

}dp;

char s[10];

priority_queue<node>qu;

int main()

{

int num=1;

    while(scanf("%s",s)!=EOF)

    {

        if(s[0]=='G')

        {

            if(!qu.empty())

            {

                node s1;

                s1=qu.top();

                printf("%s %d\n",s1.str,s1.k);

                qu.pop();

            }

            else

            {

                printf("EMPTY QUEUE!\n");

            }

        }

        else

        {

            node z;

            z.num =num++;

            scanf("%s %d %d",z.str,&z.k,&z.id );

            qu.push(z);

        }

    }



 

    return 0;

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/569940
推荐阅读
相关标签
  

闽ICP备14008679号