要求实现一个普通顺序队列当输入1 2 3 -1输出为1 2 3当输入1 2 3 4 5 6 7 8 9 10 11 -1时输出为queue is full!
时间: 2024-06-17 10:06:23 浏览: 86
要实现一个普通顺序队列,你需要先定义队列的结构体,包含队列的大小、当前长度和队列数组。然后你需要实现队列的初始化、入队、出队、判断队列是否为空和判断队列是否已满等函数。
下面是代码实现:
```
#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时退出循环。最后我们依次出队并打印出队元素,直到队列为空。
阅读全文