#include
#include
#define ERROR 0
#define OK 1
#define N 5
typedef int ElemType;
typedef int Status;
typedef struct QNode
{ ElemType data;
struct QNode * next;
} QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue ;
Status InitQueue(LinkQueue *Q);
Status EnQueue(LinkQueue *Q);
Status DeQueue(LinkQueue *Q,ElemType *e);
Status InitQueue(LinkQueue *Q)
{ Q->front=(QueuePtr)malloc(sizeof(QNode));
if (Q->front ==NULL) return ERROR;
Q->rear=Q->front;
Q->front->data=0;
Q->front->next=NULL;
return OK;
}
Status EnQueue(LinkQueue *Q)
{
QueuePtr p;
p= (QueuePtr)malloc(sizeof(QNode));
if(!p) return ERROR;
p->data = Q->rear->data+1;
p->next=NULL;
Q->rear->next =p;
Q->rear =p;
return OK;
}
Status DeQueue(LinkQueue *Q,ElemType *e)
{ QueuePtr p;
if (Q->front == Q->rear) return ERROR;
p=Q->front->next;
*e=p->data;
Q->front->next = p->next;
if(Q->rear ==p)
Q->rear=Q->front;
free(p);
return OK;
}
int main() {
int x;
Status T;
LinkQueue Q;
while(1) {
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("\t\t\t\t\t1:初始化\n");
printf("\t\t\t\t\t2:排号\n");
printf("\t\t\t\t\t3:叫号\n");
printf("\t\t\t\t\t4:系统设置\n");
printf("\t\t\t\t\t5:退出\n");
printf("\t\t\t\t\t\t请输入您的选择(1-5)=:");
scanf("%d",&x);
if(x==5) break;
switch(x) {
case 1:system("cls");
printf("正在初始化");
T=InitQueue(&Q);
printf("初始化成功");
break;
case 2:
system("cls");
int w;
printf("排号请输入1\n");
scanf("%d",&w);
if(w==1)
{
T=EnQueue(&Q);
printf("排号成功);
continue;}
else
break;
case 3:system("cls");
int e;
T=DeQueue(&Q,&e);
if(T==ERROR)
printf("无人排号");
else
printf("请%d号客户前往窗口\n",e);
break;
default:printf("error"); break;
}
printf("\n");
system("pause");
}
}