本题要求实现一个普通顺序队列。 当输入1 2 3 -1时,输出为1 2 3 。 当输入为1 2 3 4 5 6 7 8 9 10 11 -1时,输出为 queue is full! 1 2 3 4 5 6 7 8 9 10
时间: 2024-01-10 07:03:33 浏览: 49
#include <stdio.h>
#define MAXSIZE 10 // 定义队列的最大长度
typedef struct {
int data[MAXSIZE];
int front, rear; // 定义队头和队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isFull(Queue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
// 入队
void enQueue(Queue *q, int x) {
if (isFull(q)) {
printf("queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
// 出队
int deQueue(Queue *q) {
if (isEmpty(q)) {
printf("queue is empty!\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
int main() {
Queue q;
initQueue(&q);
int x;
while (scanf("%d", &x) != EOF && x != -1) {
enQueue(&q, x);
}
while (!isEmpty(&q)) {
printf("%d ", deQueue(&q));
}
return 0;
}
阅读全文