大家不要看,我就是寫個部落格讓別人給我找找錯誤。
#include#include#includeusing namespace std;
const int maxn = 10005;
/*** 指令
*/struct command
};queuesource[maxn]; //程序的待處理指令集(包括r指令和s指令)。
/*** 處理r指令
** 引數:
** num: 哪個程序的r指令
** recindex : r指令對應的程序編號
** 例如:3號程序執行r2指令,其中num=3,recindex=2。
*/bool dealr(int num,int recindex)
command command = source[recindex].front();
if(command.type == 's' && command.pid == num)else
} /*
** 處理s指令
** 引數:
** sendnum: s指令的傳送方
** recnum: s指令的接收方
** 例如:1號程序傳送s3指令,其中sendnum=1,recnum=3。
*/bool deals(int sendnum,int recnum)
command command = source[recnum].front();
if(command.type == 'r' && command.pid == sendnum)else}/*
** 判斷各個程序的待處理指令集是不是空了
*/bool judgeempty(int n)
bool ans = dealnowcommand(n);
if(ans)else
destroydata(n); //重置變數
} return 0;
}
CCF 201903 4 訊息傳遞介面
分析 這次的出題老師貌似特別擅長作業系統,第三道才考磁碟陣列,第四道立刻又來了道死鎖。本著預設第四道是圖論或者dp的想法,看完題目覺得可能不會像表面那麼簡單,但是做完發現還真的只是道模擬題。比較坑的是開始做題一直提交二十分,提示錯誤。仔細重新讀題若干遍,又檢查 若干遍,不管如何改都是二十分。最後看了...
CCF認證 201903 4訊息傳遞介面
void move str char old 將字串向前移動,每次判斷的是佇列的最前面的那乙個 while old i old i 0 memcpy temp,old i 1,70 memcpy old,temp,70 return int change num char start 將字串中的那一...
CCF 201903 4訊息傳遞介面(佇列)
我的個人部落格 原題鏈結 ccf 201903 4訊息傳遞介面 思路 主要的思路是利用佇列來儲存每乙個程序的收發指令。一旦找到匹配的指令,則將這一對出佇列。直到某一次找不到匹配的指令了,退出迴圈。再判斷是不是所有的程序對應的收發指令佇列都為空。如果全部為空,則該程式不存在死鎖,否則程序存在死鎖。因為...