病人看病(数据结构)

设计一个程序,反映病人到医院看病、排队看医生的过程。 
提示:
病人排队看医生采用先到先看的方式,所以要用到一个队列。
由于病人人数具有较大的不确定性,这里采用一个带头结点的单链表作为队列的存储结构。
为了简单,病人通过其姓名来唯一标识。
-------------------------以上是题目---------------------------------------

编译结果如图

在这里插入图片描述

代码:

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 15
typedef char datatype;

typedef struct node{
		datatype data[MAXSIZE];
		struct node *next;
}LNode; 

void print(LNode *head){//打印
	LNode *p=head->next;
	printf("  剩下的病人:\n");
	while(p!=NULL)
	{
		puts(p->data);
		p=p->next; 
	 } 
}

main(){
	LNode *head,*p,*q;
	head=(LNode *)malloc(sizeof(LNode));
	int n,i;
	printf("  输入一开始病人的人数:");
	scanf("%d",&n);
	printf("  按顺序输入病人的名字:\n");
	head->next=NULL;//初始化 
	p=head;
	getchar();
	for(i=1;i<=n;i++)
	{
		q=(LNode *)malloc(sizeof(LNode));
		q->next=NULL;
		gets(q->data);
		p->next=q;
		p=q;
	}
	print(head);
	
	printf("\n	1.新到一个病人		2.医生看一次诊		3.查看剩下的病人\n"); 
	do{
		printf("\n  输入操作:");
		scanf("%d",&n);
		
		switch(n)
		{
			case 1:		printf("\n  输入病人的姓名:");
						q=(LNode *)malloc(sizeof(LNode));
						q->next=NULL;
						getchar();
						gets(q->data);
						p->next=q;
						p=q;
						break;
			case 2:		q=head->next;
						if(q!=NULL)
						{
						printf("  正在看诊的病人是:");
						puts(q->data);
						head->next=q->next;
						free(q);
						q=head->next;
						if(q!=NULL)
						{printf("  下一个看诊的病人是:");
						puts(q->data);
						}
						else
							printf("  没有病人了\n"); 
						}
						else
							printf("  没有病人了\n");
						
						
						break;
			case 3:		if(head->next!=NULL)
							print(head);
						else
							printf("  没有病人了\n"); 
						break;
			default:	exit(0);
		}
	}while(1);
	
	
}
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值