本题要求实现一个普通顺序队列。 当输入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 请填空。 #include <stdio.h> #include <stdbool.h> #define MaxSize 10 int q[MaxSize]; int front; int rear; //空队列返回true,否则返回false bool empty(
时间: 2024-01-04 08:04:11 浏览: 252
) {
return front==rear;
}
//入队列操作,成功返回true,否则返回false bool enQueue(int x) {
if((rear+1)%MaxSize==front) return false; //队列已满
q[rear]=x;
rear=(rear+1)%MaxSize;
return true;
}
//出队列操作,成功返回true,否则返回false bool deQueue(int* x) {
if(front==rear) return false; //队列已空
*x=q[front];
front=(front+1)%MaxSize;
return true;
}
int main() {
front=rear=0;
int x;
while(scanf("%d",&x)&&x!=-1) {
if(!enQueue(x)) {
printf("queue is full!\n");
break;
}
}
while(deQueue(&x)) {
printf("%d ",x);
}
return 0;
}
相关问题
要求实现一个普通顺序队列当输入1 2 3 -1输出为1 2 3当输入1 2 3 4 5 6 7 8 9 10 11 -1时输出为queue is full!
要实现一个普通顺序队列,你需要先定义队列的结构体,包含队列的大小、当前长度和队列数组。然后你需要实现队列的初始化、入队、出队、判断队列是否为空和判断队列是否已满等函数。
下面是代码实现:
```
#include <stdio.h>
#define MAXSIZE 10
typedef struct {
int data[MAXSIZE];
int front, rear;
} SqQueue;
void InitQueue(SqQueue *Q) {
Q->front = Q->rear = 0;
}
int QueueEmpty(SqQueue Q) {
return Q.front == Q.rear;
}
int QueueFull(SqQueue Q) {
return (Q.rear + 1) % MAXSIZE == Q.front;
}
int EnQueue(SqQueue *Q, int e) {
if (QueueFull(*Q)) {
printf("queue is full!\n");
return 0;
}
Q->data[Q->rear] = e;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
int DeQueue(SqQueue *Q, int *e) {
if (QueueEmpty(*Q)) {
printf("queue is empty!\n");
return 0;
}
*e = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
int main() {
SqQueue Q;
int e;
InitQueue(&Q);
while (1) {
scanf("%d", &e);
if (e == -1) break;
if (!EnQueue(&Q, e)) break;
}
while (!QueueEmpty(Q)) {
if (!DeQueue(&Q, &e)) break;
printf("%d ", e);
}
return 0;
}
```
在这个代码中,我们定义了一个大小为10的顺序队列,包含了入队、出队、判断队列是否为空和判断队列是否已满等函数。在主函数中,我们先初始化了队列,然后读入输入的数字并依次入队,当输入-1时退出循环。最后我们依次出队并打印出队元素,直到队列为空。
本题要求实现一个普通顺序队列。 当输入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 请 填空
以下是实现代码(使用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;
}
```
阅读全文