5 2 Windows訊息佇列 25分

2022-02-28 22:45:58 字數 1248 閱讀 7423

5-2 windows訊息佇列   (25分)

訊息佇列是windows系統的基礎。對於每個程序,系統維護乙個訊息佇列。如果在程序中有特定事件發生,如點選滑鼠、文字改變等,系統將把這個訊息加到佇列當中。同時,如果佇列不是空的,這一程序迴圈地從佇列中按照優先順序獲取訊息。請注意優先順序值低意味著優先順序高。請編輯程式模擬訊息佇列,將訊息加到佇列中以及從佇列中獲取訊息。

輸入首先給出正整數n(\le 10^5≤1

0​5​

​),隨後n行,每行給出乙個指令——getput,分別表示從佇列中取出訊息或將訊息新增到佇列中。如果指令是put,後面就有乙個訊息名稱、以及乙個正整數表示訊息的優先順序,此數越小表示優先順序越高。訊息名稱是長度不超過10個字元且不含空格的字串;題目保證佇列中訊息的優先順序無重複,且輸入至少有乙個get

對於每個get指令,在一行中輸出訊息佇列中優先順序最高的訊息的名稱和引數。如果訊息佇列中沒有訊息,輸出empty

queue!。對於put指令則沒有輸出。

9

put msg1 5

put msg2 4

getput msg3 2

put msg4 4

getget

getget

msg2

msg3

msg4

msg1

empty queue!

啊哈,建立乙個最小堆,然後瞎搞就好了;

#include #include struct bstq[400040];

int main()

q[i].w=tp;

strcpy(q[i].s,ch);

}else

{if(!size)

puts("empty queue!");

else

{char tt[10];

printf("%s\n",q[1].s);

int temp=q[size].w;

strcpy(tt,q[size--].s);

int child,parent;

for(parent=1;parent*2<=size;parent=child)

{child=parent*2;

if(child!=size&&(q[child+1].w

Windows訊息佇列

輸入首先給出正整數n 1 0 5 隨後n行,每行給出乙個指令 get或put,分別表示從佇列中取出訊息或將訊息新增到佇列中。如果指令是put,後面就有乙個訊息名稱 以及乙個正整數表示訊息的優先順序,此數越小表示優先順序越高。訊息名稱是長度不超過10個字元且不含空格的字串 題目保證佇列中訊息的優先順序...

windows訊息佇列

windows訊息佇列 windows中 佇列訊息和非佇列訊息。訊息佇列由可以分成系統訊息佇列和執行緒訊息佇列。系統訊息佇列由windows維護,執行緒訊息佇列則由每個gui執行緒自己進行維護,僅當執行緒第一次呼叫gdi函式時系統才給執行緒建立乙個訊息佇列,佇列訊息送到系統訊息佇列,然後到執行緒訊息...

windows佇列訊息和非佇列訊息的詳細解釋

我們已經談到過,windows給視窗傳送訊息,這意味著windows呼叫視窗訊息處理程式。但是,windows程式也有乙個訊息迴圈,它呼叫getmessage從訊息佇列中取出訊息,並且呼叫dispatchmessage將訊息傳送給視窗訊息處理程式。那麼,windows程式是依次等待訊息 類似於普通程...