本题要求实现一个普通顺序队列。 当输入1 2 3 -1时,输出为1 2 3。 当输入为1 2 3 4 5 67 8 9 10 11 -1时,输出为 queue is full! 1 2 3 4 5 67 8 9 10 请 填空
时间: 2024-01-10 09:02:46 浏览: 80
以下是实现代码(使用C语言):
```c
#include <stdio.h>
#define MAXSIZE 10
typedef struct {
int data[MAXSIZE];
int front, rear;
} QUEUE;
void init_queue(QUEUE *q) {
q->front = q->rear = 0;
}
int is_empty(QUEUE *q) {
return q->front == q->rear;
}
int is_full(QUEUE *q) {
return q->front == (q->rear + 1) % MAXSIZE;
}
void en_queue(QUEUE *q, int x) {
if (is_full(q)) {
printf("queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
int de_queue(QUEUE *q) {
if (is_empty(q)) {
printf("queue is empty!\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
void print_queue(QUEUE *q) {
while (!is_empty(q)) {
printf("%d ", de_queue(q));
}
printf("\n");
}
int main() {
QUEUE q;
init_queue(&q);
int x;
while (scanf("%d", &x) != EOF) {
if (x == -1) {
print_queue(&q);
init_queue(&q);
} else {
en_queue(&q, x);
}
}
return 0;
}
```
阅读全文