基于菜单选择的c++代码实现顺序循环队列的基本操作:队列的初始化;判断是否队列空是否满;取栈顶元素,并返回该元素;入队,出队,并返回出队的元素;打印所有队列元素
时间: 2024-02-13 15:02:40 浏览: 76
好的,下面是基于菜单选择的 C++ 代码实现顺序循环队列的基本操作:
```cpp
#include <iostream>
#define MAXSIZE 10 // 队列的最大容量
using namespace std;
struct SqQueue {
int data[MAXSIZE];
int front; // 队头指针
int rear; // 队尾指针
};
// 初始化队列
void InitQueue(SqQueue &Q) {
Q.front = Q.rear = 0;
}
// 判断队列是否为空
bool QueueEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
// 判断队列是否已满
bool QueueFull(SqQueue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
// 返回队列的长度
int QueueLength(SqQueue Q) {
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
// 入队
void EnQueue(SqQueue &Q, int x) {
if (QueueFull(Q)) {
cout << "队列已满,无法入队!" << endl;
return;
}
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MAXSIZE;
}
// 出队
int DeQueue(SqQueue &Q) {
if (QueueEmpty(Q)) {
cout << "队列为空,无法出队!" << endl;
return -1;
}
int x = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return x;
}
// 获取队头元素
int GetHead(SqQueue Q) {
if (QueueEmpty(Q)) {
cout << "队列为空,无法获取队头元素!" << endl;
return -1;
}
return Q.data[Q.front];
}
// 打印所有队列元素
void PrintQueue(SqQueue Q) {
if (QueueEmpty(Q)) {
cout << "队列为空!" << endl;
return;
}
cout << "当前队列元素为:";
int i = Q.front;
while (i != Q.rear) {
cout << Q.data[i] << " ";
i = (i + 1) % MAXSIZE;
}
cout << endl;
}
int main() {
SqQueue Q;
int choice, x;
InitQueue(Q);
while (true) {
cout << "请输入您要进行的操作:" << endl;
cout << "1. 入队" << endl;
cout << "2. 出队" << endl;
cout << "3. 获取队头元素" << endl;
cout << "4. 打印所有队列元素" << endl;
cout << "5. 退出程序" << endl;
cin >> choice;
switch (choice) {
case 1:
cout << "请输入要入队的元素:";
cin >> x;
EnQueue(Q, x);
break;
case 2:
x = DeQueue(Q);
if (x != -1) {
cout << "出队元素为:" << x << endl;
}
break;
case 3:
x = GetHead(Q);
if (x != -1) {
cout << "队头元素为:" << x << endl;
}
break;
case 4:
PrintQueue(Q);
break;
case 5:
return 0;
default:
cout << "输入错误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
注意,以上代码实现的队列长度为 10,可以根据实际需要进行修改。
阅读全文