本文共 1813 字,大约阅读时间需要 6 分钟。
Description
银行排队系统也称之为银行排队机、叫号显示系统。随着电子信息产品、智能产品的快速发展,以及人类生活对服务环境、服务效率的要求越来越高,尤其是在服务性行业里更是如此,因此排队系统这个概念就应运而生了。现在请你实现一个简单的排号程序吧。
这里约定,新来一个用户的取号行为为Push ,第一个用户的编号为1,后面取号的编号依次类推,同时还要告知用户目前前面还有多少人在等待。用户办理完业务的行为定义为Pop。Input
输入包含多行Push或Pop。如果输入Push,则代表新用户加入排队,输出该用户的编号和目前队伍等待人数;如果输入Pop,则代表用户办理完业务从队伍中退出(不会出现Pop时队伍为空的情况)。
Output
如果是Push命令,则输出新用户编号和目前还有多少人在等待
Sample Input
Push Push Push Pop Pop PushSample Output
1 0 2 1 3 2 4 1#include#include #include struct list{ int people; int numble; struct list *next;};struct list *creatlist(){ struct list *list_1 = (struct list*)malloc(sizeof(struct list)); list_1->next = NULL; return list_1;}struct queue{ struct list *head; struct list *tail; int sizequeue;};struct queue *creatqueue(){ struct queue *queue_1 = (struct queue *)malloc(sizeof(struct queue)); queue_1->head = queue_1->tail = NULL; queue_1->sizequeue = 0; return queue_1;}void push(struct queue *queue_1){ int e_people,e_numble; struct list *list_1 = creatlist(); if(queue_1->sizequeue == 0) { queue_1->head = queue_1->tail = list_1; queue_1->sizequeue += 1; queue_1->tail->people = 1; queue_1->tail->numble = 0; } else { e_people = queue_1->tail->people; e_numble = queue_1->tail->numble; queue_1->tail->next = list_1; queue_1->tail = list_1; queue_1->sizequeue += 1; queue_1->tail->people = (e_people + 1); queue_1->tail->numble = (e_numble + 1); } printf("%d %d\n",queue_1->tail->people,queue_1->tail->numble);}void pop(struct queue *queue_1){ queue_1->tail->numble -= 1;}int main(void){ struct queue *queue_1 = creatqueue(); char a[6]; while(scanf("%s",a) != EOF) { switch(a[1]) { case 'u': push(queue_1); break; case 'o': pop(queue_1); break; default: printf("请重新输入!\n"); break; } } return 0;}
转载地址:http://wahyk.baihongyu.com/