7-26 Windows消息队列(25 分)
7-26 Windows消息隊列(25 分)
消息隊列是 Windows 系統的基礎。對于每個進程,系統維護一個消息隊列。如果在進程中有特定事件發生,如點擊鼠標、文字改變等,系統將把這個消息加到隊列當中。同時,如果隊列不是空的,這一進程循環地從隊列中按照優先級獲取消息。請注意優先級值低意味著優先級高。請編輯程序模擬消息隊列,將消息加到隊列中以及從隊列中獲取消息。
輸入格式:
輸入首先給出正整數 N(≤105??),隨后 N 行,每行給出一個指令——GET 或 PUT,分別表示從隊列中取出消息或將消息添加到隊列中。如果指令是 PUT,后面就有一個消息名稱、以及一個正整數表示消息的優先級,此數越小表示優先級越高。消息名稱是長度不超過 10 個字符且不含空格的字符串;題目保證隊列中消息的優先級無重復,且輸入至少有一個 GET。
輸出格式:
對于每個 GET 指令,在一行中輸出消息隊列中優先級最高的消息的名稱和參數。如果消息隊列中沒有消息,輸出 EMPTY QUEUE!。對于 PUT 指令則沒有輸出。
這道題用c++很好寫,用C就要想一想方法了,有模擬的,有建堆的。
以下是本蒻蒻看到的大佬代碼:大佬代碼
數組 二叉樹(“堆”)。
用數組建二叉樹
我們知道在int型里21/2=10,20/2=10,所以我們就可以利用這個特性建立一個二叉樹,比如10的左兒子20,右兒子21。每次在順位讀入一個值(作者用了更巧的方法,原理時候一樣的),然后和它的父親比較,如果優先級高就上位。
太妙了!
總結
以上是生活随笔為你收集整理的7-26 Windows消息队列(25 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端知识总结(二)
- 下一篇: 牛客题库—软件测试(二)