数据结构与算法实验--栈(3)
2022/1/16 17:34:41
本文主要是介绍数据结构与算法实验--栈(3),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用顺序(循环、非循环均可)队列模拟业务员到银行排队办理业务的情况,在这个过程中,主要重复两件事:(1)取号排队:业务员到达银行网点,在取号机上选择办理业务排队,加入排队队列,并打印显示自己的编号和排第几;(2)办理业务:银行柜员从队列中取出排在最前面的人的编号,为之服务。要求能够随时取号排队,办理业务和查看等待办理业务的序号,以及下班时,没有办理业务的编号。
要求:设置一个菜单,完成(1)取号:编号增1,加入到排队的队列中;判断队列是否满;并打印显示自己的编号和排第几。 (2)办理;取出排在最前面的编号,让其办理业务,并将其从队列中删除。(3)查看;列出从队头到队尾的所有编号(4)下班:退出运行,输出队列中剩下的编号和已经办理完成的编号数量。
typedef struct { int items[100]; int front, rear; }SqQueue; int EnQueue(SqQueue* Q, int e) //入队列 { if ((Q->rear + 1) % 100 == Q->front) { printf("队列已满,无法办理业务!\n"); return 0; } Q->items[Q->rear] = e; Q->rear = (Q->rear + 1) % 100; return 0; } int DeQueue(SqQueue* Q, int &e) //出队列 { if (Q->front == Q->rear) { printf("无人等待办理业务!\n"); return 0; } e = Q->items[Q->front]; Q->front = (Q->front + 1) % 100; return 0; } int TraverseQueue(SqQueue Q) //遍历队列 { int pos; pos = Q.front; while ((pos + 1) % 100 <= Q.rear) { cout<<Q.items[pos]<<" "; pos++; } return 0; } int main() { SqQueue A; SqQueue* Q = &A; Q->front = 0; //初始化 Q->rear = 0; int e=1,num=0; int order=0; while (order!=4) { cout << "请输入指令(1:取号 2:办理 3:查看 4:下班)" << endl; cin >> order; switch (order) { case 1: EnQueue(Q, e); //取号即为入队列 cout << "编号:" << e << " 在您前面有"<<Q->rear-1<<"人等待" << endl; e++; break; case 2: DeQueue(Q, e); //办理即为出队列,先入先出 cout << "办理编号为:" << e << endl; num++; //办理一次,num+1 break; case 3: cout << "等待办理的编号为:" ; TraverseQueue(A); //遍历队列输出 cout << endl; break; case 4: cout << "还未办理的编号为:" ; TraverseQueue(A); cout << " "; cout <<"已办理完成:"<< num; //num为办理操作次数 break; } } return 0; }
运行结果:
这篇关于数据结构与算法实验--栈(3)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南