数据结构_队列应用-医院挂号看病(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;
 }
  • 18
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mumuwei_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值