【输入形式】一个整数m,表示入队的元素个数 【输出形式】第一行:输出队头元素 第二行:队列中元素依次出队以空格间隔
时间: 2023-11-30 18:03:04 浏览: 69
队列 循环队列 入队 出队
4星 · 用户满意度95%
那么下面是根据您的要求修改后的代码,可以实现输入m个元素入队,输出队头元素和队列中所有元素的功能:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 循环队列最大长度
// 循环队列的类型定义
typedef struct {
int data[MAXSIZE]; // 队列元素
int front; // 队头指针
int rear; // 队尾指针
} CircularQueue;
// 初始化循环队列
void InitQueue(CircularQueue &Q) {
Q.front = Q.rear = 0;
}
// 判断循环队列是否为空
bool IsEmpty(CircularQueue Q) {
return Q.front == Q.rear;
}
// 判断循环队列是否已满
bool IsFull(CircularQueue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
// 元素入队
bool EnQueue(CircularQueue &Q, int x) {
if (IsFull(Q)) {
return false;
}
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MAXSIZE; // 队尾指针加1,取模是为了实现循环
return true;
}
// 元素出队
bool DeQueue(CircularQueue &Q, int &x) {
if (IsEmpty(Q)) {
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE; // 队头指针加1,取模是为了实现循环
return true;
}
int main() {
CircularQueue Q;
int m;
cin >> m;
InitQueue(Q);
for (int i = 1; i <= m; i++) {
int x;
cin >> x;
EnQueue(Q, x);
}
if (!IsEmpty(Q)) {
int x;
DeQueue(Q, x);
cout << x << endl;
while (!IsEmpty(Q)) {
DeQueue(Q, x);
cout << x << " ";
}
cout << endl;
} else {
cout << "empty!" << endl;
}
return 0;
}
```
程序中,我们根据输入的m个元素,依次将其入队。然后,如果队列不为空,我们先输出队头元素,再依次出队并输出队列中的所有元素,直到队列为空为止。如果队列为空,则直接输出 “empty!”。
阅读全文