队列应用—医院排队

队列应用—医院排队

文章目录
  1. 题目描述
  2. 样例输入
  3. 样例输出

相信大家去医院看病就诊的时候都见过医院的排队系统,该系统可以实现挂号、就诊以及查看排队人数等功能。
这极大的提高了医院的效率。

实现代码:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>

using namespace std;
typedef int datatype;
typedef struct QNode
{
   datatype      data;
   struct QNode *next;
}QNode;

typedef struct qptr
{
     QNode  *front;
      QNode * rear;
} LinkQueue;

int InitQueue(LinkQueue* &Q)
{

    Q=new LinkQueue;
    Q->front=NULL;
    Q->rear=NULL;
    return 1;

}
int QueueEmpty(LinkQueue* Q)
{

    if(Q->front==NULL&&Q->rear==NULL)
        return 1;
    else
        return 0;

}

int InQueue(LinkQueue* Q,datatype x)
{

    QNode *s;
    s=new QNode;
    s->data=x;
    s->next=NULL;
    if(Q->front==NULL&&Q->rear==NULL)
        Q->rear=Q->front=s;
    else{
        Q->rear->next=s;
        Q->rear=s;
    }
    return 1;
}

int OutQueue(LinkQueue* Q,datatype &x)
{

    QNode *p;
    if(Q->front==NULL&&Q->rear==NULL)
        return 0;
    p=Q->front;
    x=p->data;
    if(Q->rear==Q->front&&Q->rear!=NULL)
        Q->rear=Q->front=NULL;
    else
        Q->front=Q->front->next;
    free(p);
    return 1;

}

 int ShowMenu()
{

	printf("*****     排队系统     *****\n");
	printf("1 排队\n");
	printf("2 就诊\n");
	printf("3 查看排队\n");
	printf("4 下班\n");
	printf("*****     排队系统     *****\n");
	return 1;

}

int ShowMenu1()
{
	printf("请选择诊室:\n");
	printf("1 内科 2 外科 3 五官科 4 口腔科\n");
	return 1;
}
int getlength(LinkQueue* &Q){
    QNode *p;
    p=Q->front;
    int n=0;
    while(p!=NULL){
        p=p->next;
        n++;
    }
    return n;
}
void show(LinkQueue* &Q)
{
    QNode *p;
    p=Q->front;
    int n=0;
    while(p!=NULL){
        printf("%d\n",p->data);
        p=p->next;
    }
}

int main()
{
    LinkQueue* Q,*Q1,*Q2,*Q3;
    InitQueue(Q);InitQueue(Q1);InitQueue(Q2);InitQueue(Q3);
    datatype x;
    while(1){
       ShowMenu();
       scanf("%d",&x);
       if(x==1){
           ShowMenu1();
           scanf("%d",&x);
           if(x==1){
                printf("请输入病历号:\n");
                scanf("%d",&x);
                InQueue(Q,x);
                printf("挂号成功请等候,您前面排队人数%d\n",getlength(Q)-1);
           }else if(x==2){
                printf("请输入病历号:\n");
                scanf("%d",&x);
                InQueue(Q1,x);
                printf("挂号成功请等候,您前面排队人数%d\n",getlength(Q1)-1);
           }else if(x==3){
                printf("请输入病历号:\n");
                scanf("%d",&x);
                InQueue(Q2,x);
                printf("挂号成功请等候,您前面排队人数%d\n",getlength(Q2)-1);
           }else if(x==4){
                printf("请输入病历号:\n");
                scanf("%d",&x);
                InQueue(Q3,x);
                printf("挂号成功请等候,您前面排队人数%d\n",getlength(Q3)-1);
           }else {
               printf("请再试一次\n");
           }
       }else if(x==2){
            ShowMenu1();
            scanf("%d",&x);
                if(x==1){
                    if(QueueEmpty(Q)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        OutQueue(Q,x);
                        printf("请%d病人到内科看病\n",x);
                    }
                }else if(x==2){
                    if(QueueEmpty(Q1)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        OutQueue(Q1,x);
                        printf("请%d病人到外科看病\n",x);
                    }
                }else if(x==3){
                    if(QueueEmpty(Q2)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        OutQueue(Q2,x);
                        printf("请%d病人到五官科看病\n",x);
                    }
                }else if(x==4){
                    if(QueueEmpty(Q3)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        OutQueue(Q3,x);
                        printf("请%d病人到口腔科看病\n",x);
                    }
                }else{
                    printf("请再试一次\n");
                }
       }else if(x==3){
            ShowMenu1();
            scanf("%d",&x);
            if(x==1){
                if(QueueEmpty(Q)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        printf("该诊室排队人数%d:\n",getlength(Q));
                        show(Q);
                    }
            }else if(x==2){
                if(QueueEmpty(Q1)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        printf("该诊室排队人数%d:\n",getlength(Q1));
                        show(Q1);
                    }
            }else if(x==3){
                if(QueueEmpty(Q2)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        printf("该诊室排队人数%d:\n",getlength(Q2));
                        show(Q2);
                    }
            }else if(x==4){
                if(QueueEmpty(Q3)==1){
                        printf("该诊室尚无人排队\n");
                    }else{
                        printf("该诊室排队人数%d:\n",getlength(Q3));
                        show(Q3);
                    }
            }else{
                printf("请再试一次\n");
            }
       }else if(x==4){
           break;
       }else{
                printf("请再试一次\n");
       }
    }
}

效果图:

队列医院排队
队列医院排队

Even

一90后在读计算专业大学生,擅长各种语言的hello world以及安装各种软件。
guest
0 评论
Inline Feedbacks
View all comments