Advertisement

数据结构_队列应用-医院挂号看病(C语言)

阅读量:

该系统主要实现了医院挂号看病这一功能,并在此基础上对数据结构中的队列进行基本应用;在本设计中, 医院挂号看病主要包含病人挂号;查看就诊队列;就诊;下班等主要功能。

复制代码
    #include<stdio.h>
    #include<stdlib.h> 
    //定义队列结构体
    typedef struct QNode{
    	int data;
    	struct QNode *next;
    }QNode,*QueuePtr;
    
    typedef struct{
    	QueuePtr front;    //队头指针
    	QueuePtr rear;     //队尾指针 
    }LinkQueue;
    
    //遍历队列
    void output(LinkQueue *S)
    {
    	QueuePtr p;
    	p=S->front->next;
    	while(p != S->rear)
    	{
    		printf("%d ",p->data);
    		p=p->next;
    	}
    		printf("%d\n",p->data);
     } 
    
    //创建一个空队列 
    int InitQueue(LinkQueue *S)
    {
    	S->front = S->rear = (QueuePtr)malloc(sizeof(QNode)); 
    	if(!S->front)
    		return 0;
    	S->front->next = NULL;
    	return 0;
     } 
     
     //入队
     int EnQueue(LinkQueue *S,int e)
     {
     	QueuePtr p;
     	p=(QueuePtr)malloc(sizeof(QNode));
     	if(!p)
     		return 0;    //分配失败 
     	p->data = e;
     	p->next = NULL;
     	S->rear->next = p;
     	S->rear = p;
     	return 0;
      } 
     
     //出队
     int DeQueue(LinkQueue *S) 
     {
     	int e;
     	if(S->front  ==  S->rear)   	//判断队列为空 
     		return 0;
     	QueuePtr p;
     	p = S->front->next;
     	e = p->data;
     	S->front->next = p->next;    			//p指向首元节点 
    	 if(p  == S->rear)
    	 	S->front == S->rear ; 
    	free(p);
    	return e;
     }
     
     //1.挂号
     int guahao(LinkQueue S)
     {
     	int n; 
     	printf(">>请输入病历号:");
     	scanf("%d",&n);
     	EnQueue(&S,n);
     	return 0;
      } 
     
     //2.就诊
     int jiuzhen(LinkQueue S)
     {
     	int n;
     	n=DeQueue(&S);
     	printf(">>请病人%d就诊!\n",n);
    	 return 0; 
      } 
     
     //3.查看排队
    int paidui(LinkQueue S)
     {
     	printf(">>排队病人:");
     	output(&S);
     	return 0;
      } 
      
    // 4.不在排队,余下依次就诊
    int yici(LinkQueue S)
    {
    	printf(">>依次就诊:");
    	output(&S);
    	return 0; 
     } 
     
     //5.下班 
    int xiaban(LinkQueue S)
     {
     	printf("现已下班,请以下患者明日再来:");
    	output(&S);
    	return 0;
     }
     //医院挂号算法
     int suanfa()
     {
     	LinkQueue S;
     	InitQueue(&S);
     	int n=1; 
     	printf("欢迎使用本医院挂号平台:\n1.挂号  2.就诊  3.查看排队  4.不在排队,余下依次就诊  5.下班\n");
    	 while(n != 5)
    	 {
    	 	printf("请选择功能:");
    	 	scanf("%d",&n);
    	 	switch(n)
    	 	{
    	 		case 1:
    			 	guahao(S);
    	 			break;
    			case 2:
    				jiuzhen(S);
    				break;
    			case 3:
    				paidui(S);
    				break;
    			case 4:
    				yici(S);
    				break;
    		 }
    		 if(n == 5)
    		 {
    		 	xiaban(S);
    		 	return 0;
    		 }
    	  } 
    	  return 0;
      } 
     int main()
     {
     	suanfa();
     	return 0;
     }
    
    
    cpp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/4qF510I6WA2kUyZRm3jwY9lGTNL8.png)

全部评论 (0)

还没有任何评论哟~