數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬

數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬

ID:8839224

大小:170.00 KB

頁數(shù):8頁

時間:2018-04-09

數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬_第1頁
數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬_第2頁
數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬_第3頁
數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬_第4頁
數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬_第5頁
資源描述:

《數(shù)據(jù)結(jié)構(gòu):病人看病程序的模擬》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、實驗二:病人看病模擬程序一、實驗?zāi)康?、掌握單鏈隊列存儲方式的類型定義,掌握單鏈隊列的基本運算的實現(xiàn)。2、學會根據(jù)應(yīng)用問題的需要選擇合適的數(shù)據(jù)結(jié)構(gòu),掌握隊列的先進先出運算規(guī)則及其在病人看病模擬程序中的應(yīng)用,理解隊列在運算過程中狀態(tài)的變化。二、實驗內(nèi)容編寫一個程序,反映病人到醫(yī)院看病排隊看醫(yī)生的情況。三、需求分析1、運行環(huán)境:Windows操作環(huán)境,VisualC++6.02、程序應(yīng)該達到的功能:在病人排隊過程中,主要重復(fù)兩件事:(1)病人到達就診室,將病歷交給護士,排到等待隊列中候診。(2)護士從等待隊列中取出下一位病人的病歷,該病人進入入診室就診。要求模擬病

2、人等待就診這一過程。程序采用菜單方式,其選項及功能說民如下:(1)排隊——輸入排隊病人的病歷號,加入到病人排隊隊列中。(2)就診——病人排隊隊列中最前面的病人就診,并將其從隊列中刪除。(3)查看排隊——從隊首到隊尾列出所有的排隊病人的病歷號。(4)不再排隊,余下依次就診——從隊首到隊尾列出所有的排隊病人的病歷號,并退出運行。(5)下班——退出運行。四、概要設(shè)計1、數(shù)據(jù)結(jié)構(gòu)的選擇考慮到病人排隊候診的過程中具有先排隊就診的特診,與隊列的先進先出的特征相吻合,因此可以考慮采用隊列線性表,其中,隊列的存儲結(jié)構(gòu)有循環(huán)順序隊列和單鏈隊列??紤]到循環(huán)順序隊列的插入,刪除浪費

3、空間和時間,故采用單鏈隊列,而建立帶頭結(jié)點的單鏈隊列比無頭結(jié)點的單鏈隊列更簡化了插入和刪除操作,因此采用帶頭結(jié)點的單鏈隊列。2、程序的總體結(jié)構(gòu)(1)建立名為“proj3_6”的項目文件,在該項目的管理下完成本程序開發(fā)。在該項目下建立名為“exp3_6.cpp”的源程序文件,文件中主要包括main()和SeeDoctor()兩個函數(shù),它們的關(guān)系如圖1(b)所示。SeeDoctorexp3_6.cpp文件main圖1(a)圖1(b)(1)程序的主要功能在SeeDoctot()函數(shù)中實現(xiàn),main()函數(shù)起到調(diào)用SeeDoctor()函數(shù)的作用。一、詳細設(shè)計1、數(shù)據(jù)

4、結(jié)構(gòu)的類型定義:(1)鏈隊結(jié)點的類型定義typedefstructqnode{intdata;structqnode*next;}QNode;(2)鏈隊的整體結(jié)構(gòu)定義qu->rearqu->front123(3)鏈隊的整體結(jié)構(gòu)圖示qu->rearqu->front^1、main()函數(shù):voidmain(){seeDoctor();}2、SeeDoctor()函數(shù):模擬病人看病的過程。病人排隊看醫(yī)生,所以要用到一個隊列,這里設(shè)計了一個帶頭結(jié)點的單鏈表作為隊列。一、測試數(shù)據(jù)及測試結(jié)果lvoidSeeDoctor(){intsel,flag=1,find,no;/

5、/flag的初始值為1,一旦下班->>退出系統(tǒng),則將其置為0,從而結(jié)束QuType*qu;QNode*p;qu=(QuType*)malloc(sizeof(QuType));qu->front=qu->rear=(QNode*)malloc(sizeof(QNode));qu->front->next=NULL;while(flag==1){printf("1:排隊2:就診3:查看排隊4:不再排隊,余下依次就診5:下班請選擇");scanf("%d",&sel);switch(sel){case1:完成排隊功能;case2:完成就診功能;case3:完成查看

6、排隊功能;case4:完成不再排隊,余下依次就診功能;case5:完成下班請選擇功能;}}l各分支設(shè)計如下:?分支1:排隊——輸入排隊病人的病歷號,加入到病人排隊隊列中。先檢查將要排隊病人的病歷號是否已經(jīng)在隊列中,若在,則病歷號重復(fù),不能完成排隊功能,需重新輸入;若不在,將其入隊。為此,設(shè)計一個do-while語句來判斷病歷號是否存在隊列中,其循環(huán)條件:find==1;首先輸入病歷號,若在,則find=1,繼續(xù)循環(huán);若不在,find=0,跳出循環(huán),將其入隊。檢查將要入隊病人的病歷號是否存在的關(guān)鍵代碼如下:case1:printf(">>輸入病歷號");do{s

7、canf("%d",&no);find=0;p=qu->front;while(p!=NULL&&!find){if(p->data==no)find=1;elsep=p->next;}if(find)printf(">>輸入的病歷號重復(fù),重新輸入:");}while(find==1);//直到輸入一個不在隊列中的病號才結(jié)束循環(huán)p=(QNode*)malloc(sizeof(QNode));//創(chuàng)建結(jié)點p->data=no;p->next=NULL;qu->rear->next=p;qu->rear=p;//將*p結(jié)點入隊break;?分支2:就診——病人排隊

8、隊列中最前面的病人就診,并將其從隊列中

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。