#include <stdio.h>
#include <stdlib.h>
#define QElemType int
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//构造空队列
void InitQueue(LinkQueue &q){
q.front=q.rear=(QueuePtr)malloc(sizeof(QNode));
q.front->next=NULL;
}
//入队
void EnQueue(LinkQueue &q,QElemType e){
QNode *p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
}
//出队
void DeQueue(LinkQueue &q){
QNode *p;
p=q.front->next;
printf("病历号%d的患者就诊!\n",p->data);
q.front->next=p->next;
if(p==q.rear)
q.rear=q.front;
free(p);
}
//查询
void SearchQueue(LinkQueue &q){
QNode *p;
if(q.front->next==NULL){
printf("当前无排队患者!\n");
}
else{
p=q.front->next;
printf("排队患者:\n");
while(p!=NULL){
printf("病历号为%d患者\n",p->data);
p=p->next;
}
}
}
void QuitQueue(LinkQueue &q){
if(q.front->next!=NULL){
printf("下班啦,明天再来吧!\n");
}
}
void main() {
LinkQueue q;
int selete,num,c=1;
InitQueue(q);
printf(" 患者看病系统\n\n");
printf(" 1.排队\n\n");
printf(" 2.就诊\n\n");
printf(" 3.查询\n\n");
printf(" 4.退出\n\n");
while(c){
printf("请选择:\n");
scanf("%d",&selete);
switch(selete){
case 1://排队
printf("请输入病历号:\n");
scanf("%d",&num);
EnQueue(q,num);
break;
case 2://就诊
if(q.front->next==NULL){
printf("当前没有排队病人!\n");
}
else{
DeQueue(q);
}
break;
case 3://查询
SearchQueue(q);
break;
case 4://退出
QuitQueue(q);
c=0;
printf("成功退出!\n");
break;
}
}
}
#include <stdlib.h>
#define QElemType int
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//构造空队列
void InitQueue(LinkQueue &q){
q.front=q.rear=(QueuePtr)malloc(sizeof(QNode));
q.front->next=NULL;
}
//入队
void EnQueue(LinkQueue &q,QElemType e){
QNode *p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
}
//出队
void DeQueue(LinkQueue &q){
QNode *p;
p=q.front->next;
printf("病历号%d的患者就诊!\n",p->data);
q.front->next=p->next;
if(p==q.rear)
q.rear=q.front;
free(p);
}
//查询
void SearchQueue(LinkQueue &q){
QNode *p;
if(q.front->next==NULL){
printf("当前无排队患者!\n");
}
else{
p=q.front->next;
printf("排队患者:\n");
while(p!=NULL){
printf("病历号为%d患者\n",p->data);
p=p->next;
}
}
}
void QuitQueue(LinkQueue &q){
if(q.front->next!=NULL){
printf("下班啦,明天再来吧!\n");
}
}
void main() {
LinkQueue q;
int selete,num,c=1;
InitQueue(q);
printf(" 患者看病系统\n\n");
printf(" 1.排队\n\n");
printf(" 2.就诊\n\n");
printf(" 3.查询\n\n");
printf(" 4.退出\n\n");
while(c){
printf("请选择:\n");
scanf("%d",&selete);
switch(selete){
case 1://排队
printf("请输入病历号:\n");
scanf("%d",&num);
EnQueue(q,num);
break;
case 2://就诊
if(q.front->next==NULL){
printf("当前没有排队病人!\n");
}
else{
DeQueue(q);
}
break;
case 3://查询
SearchQueue(q);
break;
case 4://退出
QuitQueue(q);
c=0;
printf("成功退出!\n");
break;
}
}
}