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

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

ID:15843475

大小:170.00 KB

頁數(shù):8頁

時(shí)間:2018-08-06

數(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):病人看病程序的模擬》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

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

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

3、,隊(duì)列的存儲(chǔ)結(jié)構(gòu)有循環(huán)順序隊(duì)列和單鏈隊(duì)列??紤]到循環(huán)順序隊(duì)列的插入,刪除浪費(fèi)空間和時(shí)間,故采用單鏈隊(duì)列,而建立帶頭結(jié)點(diǎn)的單鏈隊(duì)列比無頭結(jié)點(diǎn)的單鏈隊(duì)列更簡(jiǎn)化了插入和刪除操作,因此采用帶頭結(jié)點(diǎn)的單鏈隊(duì)列。2、程序的總體結(jié)構(gòu)(1)建立名為“proj3_6”的項(xiàng)目文件,在該項(xiàng)目的管理下完成本程序開發(fā)。在該項(xiàng)目下建立名為“exp3_6.cpp”的源程序文件,文件中主要包括main()和SeeDoctor()兩個(gè)函數(shù),它們的關(guān)系如圖1(b)所示。SeeDoctorexp3_6.cpp文件main圖1(a)圖1(b)(1)程序的主要功能

4、在SeeDoctot()函數(shù)中實(shí)現(xiàn),main()函數(shù)起到調(diào)用SeeDoctor()函數(shù)的作用。一、詳細(xì)設(shè)計(jì)1、數(shù)據(jù)結(jié)構(gòu)的類型定義:(1)鏈隊(duì)結(jié)點(diǎn)的類型定義typedefstructqnode{intdata;structqnode*next;}QNode;(2)鏈隊(duì)的整體結(jié)構(gòu)定義qu->rearqu->front123(3)鏈隊(duì)的整體結(jié)構(gòu)圖示qu->rearqu->front^1、main()函數(shù):voidmain(){seeDoctor();}2、SeeDoctor()函數(shù):模擬病人看病的過程。病人排隊(duì)看醫(yī)生,所以要用到

5、一個(gè)隊(duì)列,這里設(shè)計(jì)了一個(gè)帶頭結(jié)點(diǎn)的單鏈表作為隊(duì)列。一、測(cè)試數(shù)據(jù)及測(cè)試結(jié)果lvoidSeeDoctor(){intsel,flag=1,find,no;//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:排隊(duì)2:就

6、診3:查看排隊(duì)4:不再排隊(duì),余下依次就診5:下班請(qǐng)選擇");scanf("%d",&sel);switch(sel){case1:完成排隊(duì)功能;case2:完成就診功能;case3:完成查看排隊(duì)功能;case4:完成不再排隊(duì),余下依次就診功能;case5:完成下班請(qǐng)選擇功能;}}l各分支設(shè)計(jì)如下:?分支1:排隊(duì)——輸入排隊(duì)病人的病歷號(hào),加入到病人排隊(duì)隊(duì)列中。先檢查將要排隊(duì)病人的病歷號(hào)是否已經(jīng)在隊(duì)列中,若在,則病歷號(hào)重復(fù),不能完成排隊(duì)功能,需重新輸入;若不在,將其入隊(duì)。為此,設(shè)計(jì)一個(gè)do-while語句來判斷病歷號(hào)是否存在隊(duì)

7、列中,其循環(huán)條件:find==1;首先輸入病歷號(hào),若在,則find=1,繼續(xù)循環(huán);若不在,find=0,跳出循環(huán),將其入隊(duì)。檢查將要入隊(duì)病人的病歷號(hào)是否存在的關(guān)鍵代碼如下:case1:printf(">>輸入病歷號(hào)");do{scanf("%d",&no);find=0;p=qu->front;while(p!=NULL&&!find){if(p->data==no)find=1;elsep=p->next;}if(find)printf(">>輸入的病歷號(hào)重復(fù),重新輸入:");}while(find==1);//直到輸入

8、一個(gè)不在隊(duì)列中的病號(hào)才結(jié)束循環(huán)p=(QNode*)malloc(sizeof(QNode));//創(chuàng)建結(jié)點(diǎn)p->data=no;p->next=NULL;qu->rear->next=p;qu->rear=p;//將*p結(jié)點(diǎn)入隊(duì)break;?分支2:就診——病人排隊(duì)隊(duì)列中最前面的病人就診,并將其從隊(duì)列中

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

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

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