本题要求实现一个普通顺序队列。 当输入1 2 3 1时,输出为12 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 17:02:15 浏览: 77
队列的实现代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = 0;
}
// 判断队列是否为空
int isQueueEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isQueueFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队
int enqueue(Queue *queue, int elem) {
if (isQueueFull(queue)) {
printf("queue is full!\n");
return 0;
}
queue->data[queue->rear] = elem;
queue->rear = (queue->rear + 1) % MAX_SIZE;
return 1;
}
// 出队
int dequeue(Queue *queue, int *elem) {
if (isQueueEmpty(queue)) {
printf("queue is empty!\n");
return 0;
}
*elem = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return 1;
}
// 打印队列中的元素
void printQueue(Queue *queue) {
while (!isQueueEmpty(queue)) {
int elem;
dequeue(queue, &elem);
printf("%d ", elem);
}
printf("\n");
}
int main() {
Queue queue;
initQueue(&queue);
int input;
do {
scanf("%d", &input);
if (input > 0) {
enqueue(&queue, input);
}
} while (input > 0);
printQueue(&queue);
return 0;
}
```
输入1 2 3 1时,输出为12 3。
输入为1 2 3 4 5 67 8 9 10 11 -1时,输出为 queue is full! 1 2 3 4 5 67 8 9 10 。
阅读全文