6-1 排队叫号系统 分数 20 作者 YJ 单位 西南石油大学 编写程序实现银行排队叫号系统,采用链队列作为存储结构。
时间: 2023-06-14 18:03:07 浏览: 352
以下是一个简单的银行排队叫号系统的实现,使用链队列作为存储结构:
```c++
#include <iostream>
using namespace std;
// 定义顾客结构体
struct Customer {
int number; // 号码
Customer *next; // 指向下一个顾客的指针
};
// 定义队列类
class Queue {
public:
Queue() {
front = rear = new Customer; // 创建头结点
front->next = NULL; // 初始化
}
~Queue() {
while (front) { // 释放队列中的所有结点
rear = front;
front = front->next;
delete rear;
}
}
void EnQueue(int num); // 入队
void DeQueue(); // 出队
void PrintQueue(); // 打印队列中的所有顾客
private:
Customer *front; // 头指针
Customer *rear; // 尾指针
};
// 入队
void Queue::EnQueue(int num) {
Customer *newCustomer = new Customer;
newCustomer->next = NULL; // 初始化
newCustomer->number = num; // 设置号码
rear->next = newCustomer; // 将新结点放到队尾
rear = newCustomer; // 更新尾指针
}
// 出队
void Queue::DeQueue() {
if (front == rear) { // 队列为空
cout << "队列为空,无法出队!" << endl;
return;
}
Customer *delCustomer = front->next; // 获取要删除的顾客结点
front->next = delCustomer->next; // 将头结点的后继指向要删除结点的后继
if (rear == delCustomer) { // 如果要删除的结点是最后一个结点
rear = front; // 更新尾指针
}
cout << "顾客 " << delCustomer->number << " 出队!" << endl;
delete delCustomer; // 释放要删除的结点
}
// 打印队列中的所有顾客
void Queue::PrintQueue() {
if (front == rear) { // 队列为空
cout << "队列为空!" << endl;
return;
}
Customer *p = front->next;
cout << "当前队列中有以下顾客:" << endl;
while (p) { // 遍历队列中的所有顾客
cout << "顾客 " << p->number << endl;
p = p->next;
}
}
int main() {
int choice, num;
Queue queue;
do {
cout << "请选择操作:" << endl;
cout << "1. 顾客取号" << endl;
cout << "2. 顾客出队" << endl;
cout << "3. 打印队列中的所有顾客" << endl;
cout << "0. 退出程序" << endl;
cin >> choice;
switch (choice) {
case 1:
cout << "请输入您的号码:" << endl;
cin >> num;
queue.EnQueue(num);
cout << "顾客 " << num << " 已取号!" << endl;
break;
case 2:
queue.DeQueue();
break;
case 3:
queue.PrintQueue();
break;
case 0:
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
} while (choice != 0);
return 0;
}
```
运行程序,可以选择以下操作:
1. 顾客取号
2. 顾客出队
3. 打印队列中的所有顾客
0. 退出程序
输入 `1`,然后输入顾客的号码,即可将顾客加入队列。输入 `2`,则会将队列中的第一个顾客出队。输入 `3`,则会打印队列中的所有顾客的号码。输入 `0`,则程序退出。
阅读全文