第七周实践项目5 排队看病模拟(队列)
生活随笔
收集整理的這篇文章主要介紹了
第七周实践项目5 排队看病模拟(队列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個程序,反映病人到醫院看病,排隊看醫生的情況。在病人排隊過程中,主要重復兩件事:?
(1)病人到達診室,將病歷本交給護士,排到等待隊列中候診。?
(2)護士從等待隊列中取出下一位病人的病歷,該病人進入診室就診。?
要求模擬病人等待就診這一過程。程序采用菜單方式,其選項及功能說明如下:?
(1)排隊——輸入排隊病人的病歷號,加入到病人排隊隊列中。?
(2)就診——病人排隊隊列中最前面的病人就診,并將其從隊列中刪除。?
(3)查看排隊——從隊首到隊尾列出所有的排隊病人的病歷號。?
(4)不再排隊,余下順序就診——從隊首到隊尾列出所有的排隊病人的病歷號,并退出運行。?
(5)下班——退出運行,提示未就診的病人明天再來。?
運行結果可以如下圖所示:?
(1)病人到達診室,將病歷本交給護士,排到等待隊列中候診。?
(2)護士從等待隊列中取出下一位病人的病歷,該病人進入診室就診。?
要求模擬病人等待就診這一過程。程序采用菜單方式,其選項及功能說明如下:?
(1)排隊——輸入排隊病人的病歷號,加入到病人排隊隊列中。?
(2)就診——病人排隊隊列中最前面的病人就診,并將其從隊列中刪除。?
(3)查看排隊——從隊首到隊尾列出所有的排隊病人的病歷號。?
(4)不再排隊,余下順序就診——從隊首到隊尾列出所有的排隊病人的病歷號,并退出運行。?
(5)下班——退出運行,提示未就診的病人明天再來。?
運行結果可以如下圖所示:?
#include <stdio.h> #include <malloc.h> typedef struct qnode {int data;struct qnode *next; } QNode; /*鏈隊結點類型*/typedef struct {QNode *front,*rear; } QuType; /*鏈隊類型*/void SeeDoctor() {int sel,flag=1,find,no;QuType *qu;QNode *p,*q;qu=(QuType *)malloc(sizeof(QuType)); /*創建空隊*/qu->front=qu->rear=NULL;while (flag==1) /*循環執行*/{printf("1:排隊 2:就診 3:查看排隊 4.不再排隊,余下依次就診 5:下班 請選擇:");scanf("%d",&sel);switch(sel){case 1:printf(" >>輸入病歷號:");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(" >>輸入的病歷號重復,重新輸入:");}while (find==1);p=(QNode *)malloc(sizeof(QNode)); /*創建結點*/p->data=no;p->next=NULL;if (qu->rear==NULL) /*第一個病人排隊*/{qu->front=qu->rear=p;}else{qu->rear->next=p;qu->rear=p; /*將*p結點入隊*/}break;case 2:if (qu->front==NULL) /*隊空*/printf(" >>沒有排隊的病人!\n");else /*隊不空*/{p=qu->front;printf(" >>病人%d就診\n",p->data);if (qu->rear==p) /*只有一個病人排隊的情況*/{qu->front=qu->rear=NULL;}elsequ->front=p->next;free(p);}break;case 3:if (qu->front==NULL) /*隊空*/printf(" >>沒有排列的病人!\n");else /*隊不空*/{p=qu->front;printf(" >>排隊病人:");while (p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}break;case 4:if (qu->front==NULL) /*隊空*/printf(" >>沒有排列的病人!\n");else /*隊不空*/{p=qu->front;printf(" >>病人按以下順序就診:");while (p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}flag=0; /*退出*/break;case 5:if (qu->front!=NULL) /*隊不空*/printf(" >>請排隊的病人明天就醫!\n");flag=0; /*退出*/break;}}p=qu->front; //銷毀隊列while (p!=NULL){q = p->next;free(p);p = q;} }int main() {SeeDoctor();return 0; }
總結
以上是生活随笔為你收集整理的第七周实践项目5 排队看病模拟(队列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七周实践项目4 队列数组
- 下一篇: 第七周实践项目6 停车场模拟(栈和队列