用c语言实现一个队列,队列初始为空,支持四种操作: 1. enqueue x – 向队尾插入一个数x; 2. dequeue – 从队头弹出一个数; 3. empty – 判断队列是否为空; 4. query – 查询队头元素。 现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的结果。 Input 第一行包含整数M,表示操作次数。 接下来M行,每行包含一个操作命令,操作命令为enqueue x,dequeue,empty,query中的一种。 Output 对于每个empty和query操作都要输出一个查询结果,每个结果占一行。 其中,empty操作的查询结果为YES或NO,query操作的查询结果为一个整数,表示队头元素的值。
时间: 2023-05-17 21:04:40 浏览: 399
以下是用C语言实现队列的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int queue[MAX_SIZE];
int front = 0, rear = 0;
void enqueue(int x) {
if (rear == MAX_SIZE) {
printf("Queue is full.\n");
return;
}
queue[rear++] = x;
}
void dequeue() {
if (front == rear) {
printf("Queue is empty.\n");
return;
}
front++;
}
int empty() {
return front == rear;
}
int query() {
if (front == rear) {
printf("Queue is empty.\n");
return -1;
}
return queue[front];
}
int main() {
int m;
scanf("%d", &m);
while (m--) {
char op[10];
scanf("%s", op);
if (op[0] == 'e') {
int x;
scanf("%d", &x);
enqueue(x);
} else if (op[0] == 'd') {
dequeue();
} else if (op[0] == 'e') {
printf("%s\n", empty() ? "YES" : "NO");
} else if (op[0] == 'q') {
printf("%d\n", query());
}
}
return 0;
}
如果你有更好的实现方法,也可以分享给我。
阅读全文