在VS中,设计一个算法模拟医院排队就医的过程,,在程序中用户可以选择患者排队、看医生、查看排队等操作,要求使用循环队列的思想对患者进行排队,看医生的操作之前需要检查队列中是否为空,空队列将提示“没有排队的患者”;查看排队则需要遍历循环队列的各个元素;下班则退出程序。
时间: 2023-12-03 10:45:53 浏览: 68
以下是一个简单的实现,可以根据实际需求进行修改和完善:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 5; // 队列最大容量
int queue[MAXSIZE]; // 存储队列元素的数组
int front = 0, rear = 0; // 队头和队尾指针
// 判断队列是否为空
bool is_empty() {
return front == rear;
}
// 判断队列是否已满
bool is_full() {
return (rear + 1) % MAXSIZE == front;
}
// 入队操作
bool enqueue(int value) {
if (is_full()) {
cout << "队列已满,无法继续排队!" << endl;
return false;
}
queue[rear] = value;
rear = (rear + 1) % MAXSIZE;
return true;
}
// 出队操作
bool dequeue() {
if (is_empty()) {
cout << "没有排队的患者!" << endl;
return false;
}
int value = queue[front];
front = (front + 1) % MAXSIZE;
cout << "患者 " << value << " 已经看完医生了!" << endl;
return true;
}
// 遍历队列元素
void traverse() {
if (is_empty()) {
cout << "当前没有排队的患者!" << endl;
return;
}
cout << "当前排队的患者是:";
int i = front;
while (i != rear) {
cout << queue[i] << " ";
i = (i + 1) % MAXSIZE;
}
cout << endl;
}
int main() {
int choice = 0;
while (true) {
cout << "请选择操作:1.排队 2.看医生 3.查看排队 4.下班" << endl;
cin >> choice;
switch (choice) {
case 1: {
int value = 0;
cout << "请输入患者编号:";
cin >> value;
if (enqueue(value)) {
cout << "患者 " << value << " 已经成功排队!" << endl;
}
break;
}
case 2: {
dequeue();
break;
}
case 3: {
traverse();
break;
}
case 4: {
cout << "下班了,欢迎下次光临!" << endl;
return 0;
}
default: {
cout << "输入有误,请重新选择!" << endl;
break;
}
}
}
return 0;
}
```
注意,这里使用的是循环队列的思想,需要用取模运算来保证队头和队尾指针的循环使用。同时,队列的最大容量也需要根据实际情况进行调整。
阅读全文