看病排队问题
#include <stdio.h>#include <malloc.h>#include <string.h>typedef struct QNode { char data[10]; struct QNode *next;} QType; /*链队结点类型*/typedef struct { QType *front,*rear;} LinkQueue; /*链队类型*/void SeeDoctor(){ int sel,flag=1; LinkQueue *lq; QType *s; char name[10]; lq=(LinkQueue *)malloc(sizeof(LinkQueue)); lq->front=(QType *)malloc(sizeof(QType)); lq->front->next=NULL; lq->rear=lq->front; while (flag==1) /*未下班时循环执行*/ { printf("1:排队 2:看医生 3:查看排队 0:下班 请选择:"); scanf("%d",&sel); switch(sel) { case 0: if (lq->front!=lq->rear) /*队不空*/ printf(" >>请排队的患者明天就医\n"); flag=0; break; case 1: printf(" >>输入患者姓名:");scanf("%s",name); s=(QType *)malloc(sizeof(QType)); strcpy(s->data,name);s->next=NULL; lq->rear->next=s;lq->rear=s; break; case 2: if (lq->front==lq->rear) /*队空*/ printf(" >>没有排队的患者\n"); else { s=lq->front->next; if (lq->rear==s) lq->rear=lq->front; printf(" >>患者%s看医生\n",s->data); lq->front->next=s->next; free(s); } break; case 3: if (lq->front==lq->rear) /*队空*/ printf(" >>没有排列的患者\n"); else { s=lq->front->next; printf(" >>排队患者:"); while (s!=NULL) { printf("%s ",s->data); s=s->next; } printf("\n"); } break; } }}void main(){ SeeDoctor();}